我正在创建一个简单的 select2 搜索框,其中包含对 php 页面的远程请求。
我选择使用“json”而不是“jsonp”,它似乎工作正常。
问题是结果是白色的:没有写入元素列表。
在我无法发布的图像中,因为“我需要至少 10 个声望才能发布”... -.- 您可以看到带有字母“d”的输入框,并且:
- 没有加载图标(因为搜索已正确结束)
- 没有“搜索”写入(因为搜索已正确结束)
- 搜索框高度正好是 2 个结果,您可以选择结果,但文本不可见.. 您只看到蓝色选择..
代码如下:
function MultiAjaxAutoComplete(element, url) {
$(element).select2({
minimumInputLength: 1,
ajax: {
url: url,
dataType: 'json',
data: function(term, page) {
return {
q: term,
page_limit: 10
};
},
results: function(data, page) {
return {
results: data
};
}
},
formatResult: formatResult,
formatSelection: formatSelection,
initSelection: function(element, callback) {
var data = [];
$(element.val().split(",")).each(function(i) {
var item = this.split(':');
data.push({
id: item[0],
title: item[1]
});
});
//$(element).val('');
callback(data);
}
});
};
function formatResult(movie) {
return '<div>' + movie.title + '</div>';
};
function formatSelection(data) {
return data.title;
};
MultiAjaxAutoComplete('#advertiser', '/AJAXController');
并且返回的json数据如下
[{"id":"12889","title":"Donnie Darko" },
{"id":"8", "title":"Another title"}
]
PS:我得到了两个结果,因为目前,我将 json 数据作为直接输出文本返回,并带有“echo <<< EOF ...”
谢谢你,毛罗