将json对象转换为输入字段

时间:2017-10-12 17:01:56

标签: jquery json codeigniter

我正试图达到目标,我不知道我是否采取了正确的方法。 我使用Codeigniter在数据库中插入表单数据。我有一个下拉字段,下面的一些输入字段可以根据下拉列表中选择的值显示。下拉列表和输入字段是链接的。我尝试实现的方式使我需要将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);
}

1 个答案:

答案 0 :(得分:3)

你的get_input函数正在返回一个json对象,所以......

  1. 您必须在$ .ajax调用中设置该dataType。

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

  3. 全部放在一起......

    $(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(''));
                }
            });
        });
    });