我使用的是select2版本4,我在XPage上有一个REST服务控件,它从names.nsf中读取fullname列。
我的搜索工作正常,但出于某种原因,我没有得到我可以选择的值列表。
返回的JSON对象如下所示:
[{"@entryid":"1376-E6D5EBE8ADBEFA7088257DF8006E4BA2","fullname":"Full Name\/OU\/O"},{"@entryid":"1375-FD1CB92A13BFD0E088257DE4006756D7","fullname":"Another Full Name\/OU\/O"}]
初始化select2的代码如下所示:
x$( "#{id:comboBox1}" ).select2({
ajax: {
url: "xJSON.xsp/names",
dataType: 'json',
delay: 250,
data: function (params) {
return {
search:'[fullname=]*'+params.term+'*',
// q: params.term, // search term
page: params.page
};
},
results: function (data, page){
},
processResults: function (data, page) {
// parse the results into the format expected by Select2.
// since we are using custom formatting functions we do not need to
// alter the remote JSON data
console.log(data);
return {
results: data
};
},
cache: true
},
//escapeMarkup: function (markup) { return markup; },
minimumInputLength: 1
});
当我查看浏览器的控制台时,我可以看到搜索工作正在返回JSON对象,但是,我没有得到可供选择的值列表。
对于结果返回我已经尝试过结果:data.fullname和results:data,text:'fullname'但没有任何反应。
我在做什么?
答案 0 :(得分:2)
您需要切换JSON响应以包含每个对象的id
和text
,或者在processResults
方法中重新映射它们。现在在Select2 4.0中的所有可选对象上These two properties are required。由于我假设您无法更改JSON响应,或者它没有意义,您可以使用以下processResults
方法轻松地重新映射数据。
processResults: function (data) {
var data = $.map(data, function (obj) {
obj.id = obj.id || obj["@entityid"];
obj.text = obj.text || obj.fullname;
return obj;
});
return {
results: data
};
});
这会将@entityid
属性映射到id
属性,将fullname
属性映射到text
属性。因此,选择将发送到包含@entityid
的服务器,并将使用fullname
显示。
此外,Select2 4.0中不再需要results
方法。这已重命名为当前的processResults
方法。
答案 1 :(得分:0)
我完全按原样复制了您的代码,只是更改了fieldname
和搜索查询,并且运行得很好。
这是我的JSON
看起来像
[{"@entryid":"1482-AD112B834158AD0D80257E4B004EC42E","@unid":"AD112B834158AD0D80257E4B004EC42E","id":"Victor Hunter","text":"Odhran Patton"},{"@entryid":"1496-291F2480D806A91E80257E4B004EC3D2","@unid":"291F2480D806A91E80257E4B004EC3D2","id":"Wesley O'Meara","text":"Wesley O'Meara"},{"@entryid":"1421-CC19D06880F5DC2980257E4B004EC537","@unid":"CC19D06880F5DC2980257E4B004EC537","id":"Stephen Woods","text":"Emma Doherty"}]
我所知道的是select2
期望来自id
的 text
和 JSON
参数