2017-10-12 250 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