codeigniter - 使用json填充下拉列表和查询结果

时间:2013-07-26 12:56:50

标签: jquery json codeigniter select

我有一个下拉列表,当更改时将值传递给控制器​​。

然后,该控制器通过模型运行一个返回多个结果的查询。

我需要以某种方式使用查询结果填充我的下拉列表。

我的语法是:

控制器

  function GetDeliveryAddressfromCustomer(){

    $this->load->model('Sales_model');
    if (isset($_POST['data'])){
        $q = strtolower($_POST['data']);
        $data = $this->Sales_model->GetDeliveryAddressfromCustomer($q);
        $this->output->set_content_type('application/json')->set_output(json_encode($data));
    }
}

模型

  function GetDeliveryAddressfromCustomer($q){
    $this->db->select('deliveryaddress');
    $this->db->where('Account', $q);
    $query = $this->db->get('Client');
    if($query->num_rows > 0){
        foreach ($query->result_array() as $row){
            $row_set[] = htmlentities(stripslashes($row['deliveryaddress'])); 
       }
       return $row_set;
    }
  }

查看JS

 $.post('GetDeliveryAddressfromCustomer', {data:selectedObj.value},function(result) { 
  var selcust = selectedObj.value;

  //what to put here to pupulate dropdown list

  }); 

查看选择

 <select id="deliveryaddress" name="deliveryaddress" data-mini="true" data-theme="a">
   <option value="0"></option>
 </select>

错误是:Trying to get property of non-object

我认为错误来自返回的多个结果。 selectedObj.value是一个数组而不是值。

我不太担心贬低下拉的部分,但如果你有建议,请提供。

谢谢, 莱恩

1 个答案:

答案 0 :(得分:1)

请发布您的json对象,因为我不知道您的数据输出是什么样的

但无论如何要检查出来

$.post('GetDeliveryAddressfromCustomer', {data:selectedObj.value},function(result) { 
  var selcust = selectedObj.value;

  //what to put here to pupulate dropdown list
 $("#deliveryaddress").html('<option value=""></option>'); //or you could empty it or ignore this line
$.each(result, function(index, value) {
  $("#deliveryaddress").append('<option value="'+value+'">'+value+'</option>')
            });
        }
        , "json"  //dont forget this
                );