2017-10-12 1 views
0

J'essaie d'atteindre une cible, je ne sais pas si je prends la bonne direction. J'utilise Codeigniter pour insérer des données de formulaire dans la base de données. J'ai un champ déroulant, en dessous de certains champs d'entrée peuvent être affichés en fonction de la valeur sélectionnée dans la liste déroulante. Les champs déroulants et les champs de saisie sont liés. La façon dont j'essaie de se rendre compte que me fait besoin de convertir l'objet JSON aux champs d'entrée, car après avoir fait une sélection dans le menu déroulant résultat apparaît comme ceci:Convertir un objet json en champ de saisie

[{"name":"NSS"},{"name":"POLIZA"},{"name":"CARNET"}] 

Comment puis-je convertir le résultat ci-dessus pour:

<input type="text" name="NSS"> 
<input type="text" name="POLIZA"> 
<input type="text" name="CARNET"> 

est inférieure à la façon dont je tente de le réaliser:

I FORMULAIRE VIEW.

<form method="post" action="<?php echo site_url('admin/save');?>" > 

    <div class="form-group"> 
    <label>Seguro médico</label> 
    <div class="col-sm-6"> 
     <select name="seguro_medico" id="seguro_medico"> 
     <option></option> 
     <?php 
     foreach($seguro_medico as $row) 
      echo '<option value="'.$row->id_ap.'">'.$row->medical_insurance.'</option>'; 
     ?> 
     </select> 
    </div> 
    </div> 

    <div id="seguro_input"> 
    <?php 
    if (isset($GET_INPUT)) { 
     foreach($GET_INPUT as $get_input) { 
    ?> 
      <div class="form-group"> 
      <label><?=$get_input->name;?></label> 
      <div class="col-sm-6"> 
       <input type="text" name="<?=$get_input->name;?>" > 
      </div> 
      </div> 
    <?php 
     } 
    } 
    ?> 
    </div> 

    <input type="submit" name="send_citas" value="Send"> 

</form> 

II- CODE JQUERY.

$(document).ready(function() { 

    $("#seguro_medico").on('change',function(e) { 

     e.preventDefault(); 

     $.ajax({ 
      url: '<?php echo site_url('admin/get_input');?>', 
      type: 'post', 
      data: 'seguro_medico='+$("#seguro_medico").val(), 
      success: function(data) { 
       $("#seguro_input").html(data); 
      } 
     }); 
    }); 
}); 

III- LE CONTRÔLEUR (get_input).

public function get_input() { 

    $seguro_medico=$this->input->post('seguro_medico'); 
    $query = $this->model_admin->get_input($seguro_medico); 
    $data['GET_INPUT'] =$query; 
    echo json_encode($query); 
} 

Répondre

2

Votre fonction get_input retourne un objet JSON, alors ...

  1. Vous devez définir ce type de données dans votre appel .ajax $.

  2. Dans la fonction de réussite, vous pouvez prendre le tableau d'objets json et le boucler pour écrire toutes les entrées correspondantes, en conservant les divs du conteneur.

Mettre tous ensemble ...

$(document).ready(function() { 

    $("#seguro_medico").on('change',function(e) { 

     e.preventDefault(); 

     $.ajax({ 
      url: '<?php echo site_url('admin/get_input');?>', 
      type: 'post', 
      data: { seguro_medico: $("#seguro_medico").val() }, 
      dataType: 'json', 
      success: function (data) { 

       var inputs = []; 

       $.each(data,function(id,value) { 
        inputs.push(
         '<div class="form-group">' + 
          '<label>' + value.name + '</label>' + 
          '<div class="col-sm-6">' + 
          '<input type="text" name="' + value.name + '">' + 
          '</div>' + 
         '</div>' 
        ); 
       }); 

       $("#seguro_input").html(inputs.join('')); 
      } 
     }); 
    }); 
}); 
+0

Merci beaucoup c'est exactement ce que je dois. Mais maintenant, comment puis-je passer le nom du champ d'entrée au contrôleur qui enregistre le formulaire dans la base de données? Comme 'input1' => $ this-> input-> post ('input1') – Diasline

+0

Oui, c'est ça. Si vous soumettez le formulaire avec un POST, dans votre contrôleur, vous recevrez une variable de publication pour chaque entrée. –

+0

J'ai essayé comme: la fonction publique save() { $ save = array ( 'seguro_medico' => $ this-> entrée-> après ('seguro_medico') ) }. Je ne sais pas comment afficher les valeurs d'entrée. – Diasline