将json结果返回到select2时遇到问题。我的json不返回具有“text”字段的结果,因此需要格式化结果,以便select2接受“Name”。
如果json中的文本字段设置为“text”,则此代码有效,但在这种情况下,我无法更改json结果的格式(我的控件之外的代码)。
$("#e1").select2({
formatNoMatches: function(term) {return term +" does not match any items." },
ajax: { // instead of writing the function to execute the request we use Select2's convenient helper
url: "localhost:1111/Items.json",
dataType: 'jsonp',
cache: true,
quietMillis: 200,
data: function (term, page) {
return {
q: term, // search term
p: page,
s: 15
};
},
results: function (data, page) { // parse the results into the format expected by Select2.
var numPages = Math.ceil(data.total / 15);
return {results: data.Data, numPages: numPages};
}
}
});
我查看了文档并找到了一些可以添加到结果中的语句,例如
text: 'Name',
但我仍然得到“文字未定义”。
感谢您的帮助。
答案 0 :(得分:5)
请注意,select2始终位于{id,text}对中,因此您需要同时指定
results: function (data, page) {
var newData = [];
_.each(data, function (item) {
newData.push({
id: item.Id //id part present in data
, text: item.DisplayString //string to be displayed
});
});
return { results: newData };
}
},
答案 1 :(得分:0)
感谢@neel shah解决我的问题。我只有一点问题,我不想使用额外的库,所以这就是为什么我改为普通的jquery。 所以,如果想要正常的jquery或javascript。
results: function (data, page) {
var newData = [];
$.each(data, function (index,value) {
newData.push({
id: value.Id, //id part present in data
text: value.DisplayString //string to be displayed
});
});
}
OR
results: function (data, page) {
var newData = [];
for ( var i = 0; i < data.length; i++ ) {
newData.push({
id: data[i].Id, //id part present in data
text: data[i].DisplayString //string to be displayed
});
}
所有学分都归neel shah所有。再次感谢。