gpt4 book ai didi

json - Select2 和 JSON 数据

转载 作者:行者123 更新时间:2023-12-01 00:14:58 28 4
gpt4 key购买 nike

我正在使用 select2 版本 4,我在 XPage 上有一个 REST 服务控件,它从 names.nsf 中读取全名列。

我可以进行搜索,但出于某种原因,我没有得到可供选择的值列表。

返回的 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 对象,但是,我没有获得可供选择的值列表。

对于结果返回,我尝试了 results: data.fullname 和 results: data, text:'fullname' 但没有任何反应。

我在做什么?

最佳答案

您需要切换您的 JSON 响应以包含每个对象的 idtext,或者在您的 processResults 方法中重新映射它们. These two properties are required现在在 Select2 4.0 中的所有可选对象上。由于我假设您无法更改您的 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 显示。


此外,results 方法在 Select2 4.0 中不再需要。这已重命名为当前的 processResults 方法。

关于json - Select2 和 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29380249/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com