Php 基于Ajax的Select2 Codeigniter问题

Php 基于Ajax的Select2 Codeigniter问题,php,jquery,ajax,codeigniter,jquery-select2,Php,Jquery,Ajax,Codeigniter,Jquery Select2,嗨,朋友们,我正在尝试使用CodeIgniter做一个基于Ajax的select2。我使用的是4.0.1 Select2版本。我收到了来自ajax的响应,但结果没有显示在SELECT2中。你能检查一下下面的代码并告诉我哪里做错了吗 这是我的型号 //Model class AddServiceAreaModel extends CI_Model { //Function for getting suburbs from restaurant //MAIN FUNCTION FOR

嗨,朋友们,我正在尝试使用CodeIgniter做一个基于Ajax的select2。我使用的是4.0.1 Select2版本。我收到了来自ajax的响应,但结果没有显示在SELECT2中。你能检查一下下面的代码并告诉我哪里做错了吗

这是我的型号

//Model
class AddServiceAreaModel extends CI_Model
{
    //Function for getting suburbs from restaurant
    //MAIN FUNCTION FOR DATATABLE
    public function get_postcodes($q)
    {
        $query = $this->db->select('postcode')
                          ->group_by('postcode')
                          ->like('postcode', $q)
                          ->get('tbl_suburb');

        $json = $query->result_array();
        echo json_encode($json);
    }
}
以下是我的观点

<div id="page-inner">
  <div class="row">
    <div class="col-md-12"> 
      <!-- Advanced Tables -->
      <div class="panel panel-default">
        <div class="panel-heading"> Add Service Area</div>
        <form id="addFrm">
          <div class="panel-body">
            <div class=""> 

              <!-- Modal content-->
              <div class="row">
                <div class="col-md-6">
                  <div class="form-group">
                    <label for="postcode">Postcode</label>
                    <select class="selectbox form-control required" id="postcode" name="postcode"></select>
                  </div>
                </div>
              </div>
            </div>
            <button type="submit" id="btnSubmit" class="btn btn-success">Update</button>
          </div>
        </form>
      </div>
      <!--End Advanced Tables --> 
    </div>
  </div>
  <!-- /. ROW  --> 
</div>
<script type="text/javascript"> 

    $(document).ready(function() {
        $('#postcode').select2({
            placeholder: 'Select for tag',
            ajax: {
              url: '<?php echo base_url('restaurant/addservicearea/get_postcode') ?>',
              dataType: 'json',
              delay: 250,
              processResults: function (data) {
                return {
                  results: data
                };
              },
              cache: true
            }
      });
   });
</script>
输出显示空白结果,即使我在ajax中得到响应。


你能告诉我哪里错了吗?提前感谢。

前面我认为您需要一个成功功能,但是选择2使用processResults功能。事实证明,你只需要这样:

processResults: function (data) {
    return {
      results: data.items
    };
},
然后,在PHP中,当您发回响应时,select2需要一个items元素,然后是包含“id”和“text”的数组:


我在本地进行了测试,在做了这些更改之后,我得到了结果。现在应该对你有用了。

根本不起作用。请检查并让我知道。谢谢,我现在开始工作了,修改了我的答案。我在本地用CI3测试了这个。
processResults: function (data) {
    return {
      results: data.items
    };
},
// This is just a sample, of course yours will be dynamic
echo json_encode(array(
    'items' => array(
        array('id' => '0', 'text' => '12345'),
        array('id' => '1', 'text' => '12346'),
        array('id' => '2', 'text' => '12347')
    )
);