使用 ajax 在 Select2 上未显示数据
Posted
技术标签:
【中文标题】使用 ajax 在 Select2 上未显示数据【英文标题】:Data Not displaying on Select2 with ajax 【发布时间】:2015-06-21 04:38:57 【问题描述】:我在 codeigniter 中使用 jQuery select2 和 ajax。
我的 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"]
此代码未显示任何内容。 这段代码有什么错误?
【问题讨论】:
还需要答案吗?可能不是。时间过得真快。 5年了! 【参考方案1】:试试
改变results: function (data)
给success: function (data)
【讨论】:
【参考方案2】:根据此处的文档:https://select2.github.io/options.html#ajax,处理结果的关键是processResults
,而不是results
。你试过改变它吗? processResults
的文档还指出:
您可以修改从服务器返回的结果,允许您在最后一刻对数据进行更改,或者找到要传递给 Select2 的响应的正确部分。请记住,结果应作为对象数组传递。该对象应包含一个数据对象数组作为
results
键。
【讨论】:
【参考方案3】:对象数组,请确保您的对象具有以下属性: id(这是标签的值) 文本(这是用于标签中显示的文本) 使用 processResults 而不是 Results。
在 Select 2 对象内的 AJAX 请求中,您必须修改 Select 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
);
【讨论】:
以上是关于使用 ajax 在 Select2 上未显示数据的主要内容,如果未能解决你的问题,请参考以下文章