数据不在带有ajax的Select2上显示

时间:2015-04-15 09:27:16

标签: jquery json codeigniter jquery-select2

我在codeigniter中使用带有ajax的jQuery select2。

我的HTML代码是:

<div class="col-md-4">
<select id="country" name="country" style="width: 100%;"></select>
<span class='text-red'><?php echo form_error('country_name'); ?></span>
</div>

我的select2 ajax代码是:

jQuery('#country').select2({
            ajax: {
                url: '<?php echo site_url('countries/get_countries')?>',
                dataType: 'json',
                type : 'GET',
                data: function (param) 
                {
                    return {
                        countries : param.term
                    };
                },
                results: function (data) {
                    var myResults = [];
                    jQuery.each(data, function (index, item) {
                        myResults.push({
                            id: item.id,
                            text: item.name
                        });
                    });
                    return {
                        results: myResults
                    };
                }
            }
        });

返回JSON字符串就像:

[{"id":"14","name":"India"},{"id":"18","name":"USA"},{"id":"20","name":"jaipur"},{"id":"21","name":"shri lanka"}]

此代码未显示任何内容。 这段代码中的错误是什么?

3 个答案:

答案 0 :(得分:0)

试 改变results: function (data) {
success: function (data) {

答案 1 :(得分:0)

根据此处的文档:https://select2.github.io/options.html#ajax,处理结果的关键是processResults而不是results。你试过改变吗?还有processResults州的文件:

  

您可以修改从服务器返回的结果,允许您对数据进行最后更改,或者找到要传递给Select2的响应的正确部分。请记住,结果应作为对象数组传递。该对象应包含一个数据对象数组作为results键。

答案 2 :(得分:0)

对象数组,请确保您的对象具有以下属性:  id(用于标记的值)  文本(这是标记中显示的文本) 使用processResults而不是Results。

在“选择2对象”中的AJAX请求中,您将必须修改“选择2对象”的AJAX对象的processResults属性。 (满口)。 在processResults属性中,您将使用匿名方法并返回结果。

示例:

$("#selectUpsells").select2({
  ajax: { 
   url:'admin/get-product-list',
   type: "post",
   dataType: 'json',
   delay: 250,
   data: function (params) {
    return {

      search_term: params.term
    };
   },
   processResults: function (data) { 
     return {
        results: $.map(data, function(obj) {
            return { id: obj.id, text: obj.product_name };
        })
     };
   },
   cache: true
  }
 });