我有一个Select2框,可以通过PHP成功搜索并返回JSON结果,但不能正确显示。我得到的只是"未定义 - 未定义"。 Here's a screenshot.
这是返回的JSON:{"hash":"5304c7399a0e169572b01d1123db3de3","donorname":"John Smith","nbid":"4"}
这是我对Select2的Javascript调用:
function formatdonorList (data) {
var donors = "<div class='select2-result-listsitory clearfix'>" +
"<div class='select2-result-listsitory__meta'>" +
"<div class='select2-result-listsitory__title'>" + data.donorname + " — " + data.hash + "</div>";
"</div>";
return donors;
}
function formatdonorListSelection (list) {
return list.donorname;
}
$(".donorsearch").select2({
ajax: {
url: "/list-donor-data.php",
dataType: 'json',
delay: 250,
data: function (params) {
//var paramsterm = params.term;
return {
query: params.term, // search term
};
},
processResults: function (data) {
return {
results: data,
};
},
cache: true
},
escapeMarkup: function (donors) { return donors; },
minimumInputLength: 1,
templateResult: formatdonorList,
templateSelection: formatdonorListSelection
});
感谢。
答案 0 :(得分:0)
请检查Data format for Select2.js(版本4)并查看 id
字段是否必要。
所以必须调整processResults:
processResults: function (data) {
return {
results: $.map(data.results, function(obj, index) {
return {
id: obj.nbid,
donorname: obj.donorname,
hash: obj.hash
};
})
};
},
这是一个小提琴(ajax模拟):http://jsfiddle.net/beaver71/v9bz0xfw/
P.S。:在jsFiddle模拟数据中,ajax发布到/echo/
服务并作为data.results返回;适应你的情况