2017-10-12 82 views
0

我试图达到目标,我不知道我是否采取正确的方式。 我使用Codeigniter在数据库中插入表单数据。我有一个下拉字段,下面的某些输入字段可以根据下拉列表中选择的值显示。下拉菜单和输入字段已链接。我尝试实现这让我需要JSON对象输入字段转换,因为在下拉结果中进行选择后的方式出现这样的:转换json对象到输入字段

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

我如何转换上面的结果:

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

以下是我尝试实现它的方式:

I-表格视图。

<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- JQUERY CODE。

$(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-控制器(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); 
} 

回答

2

get_input函数返回一个JSON对象,所以......

  1. 你必须设置该数据类型在$就调用。

  2. 在成功函数中,您可以获取json对象数组并循环它以写入所有相应的输入,并维护容器div。

把所有在一起...

$(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

非常感谢你这正是我需要的。但是现在我怎么可以将输入字段名称传递给将表单保存到数据库的控制器呢?像'input1'=> $ this-> input-> post('input1') – Diasline

+0

是的,就是这样。如果您使用POST提交表单,则在您的控制器中,您将为每个输入接收一个帖子变量。 –

+0

我试过像:public function save() { $ save = array( 'seguro_medico'=> $ this-> input-> post('seguro_medico') ) }。我不知道如何发布输入值。 – Diasline