我在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"}]
此代码未显示任何内容。 这段代码中的错误是什么?
答案 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
}
});