gpt4 book ai didi

javascript - Select2 - 结果未在使用 AJAX 的下拉列表中列出

转载 作者:行者123 更新时间:2023-11-29 21:37:57 25 4
gpt4 key购买 nike

我正在使用 Select2 4.0.1,我已经使用 ajax 根据用户输入填充结果,但是每当我搜索任何 select2 都没有列出任何结果时,我在 ajax 响应中得到了正确的结果。

它的输入框在 ajax 响应后也失去了焦点。

这就是我初始化 select2 的方式 -

  $('#select_tag_element').select2({
closeOnSelect: false,
multiple: true,
placeholder: 'Assign a new tag',
tags: true,
tokenSeparators: [","],
ajax: {
url: "search_url",
dataType: 'json',
type: 'GET',
delay: 250,
data: function (params) {
return {
search: params.term,
page: params.page
};
},
processResults: function (data) {
console.log(data)
return { results: $.map( data, function(item) {
return { id: item.id, text: item.name }
})
};
},
cache: true
}
});

我得到了预期的 JSON Javascript 控制台。

[Object, Object, Object]
0: Object
id: 239
name: "Tag1"
__proto__: Object
1: Object
id: 255
name: "Tag2"
__proto__: Object
2: Object
id: 256
name: "Tag3"
__proto__: Object
length: 3
__proto__: Array[0]

非常感谢任何帮助。Thnx:)

更新 -

我调试并发现它在下拉列表中加载了结果,但是当 globalEventContext.trigger( "ajaxComplete", [jqXHR, s ] );这一行在 中执行时,它删除了结果下拉列表jquery.js

if ( fireGlobals ) {
globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
// Handle the global AJAX counter
if ( !( --jQuery.active ) ) {
jQuery.event.trigger( "ajaxStop" );
}
}

如何防止结果下拉菜单在上述触发器上关闭?

============================================= ================

更新

我能够弄清楚这个问题。这是因为我在 ajax 成功时初始化了 select2。所以结果下拉列表被隐藏了。

最佳答案

我刚刚修改了你的代码,这对你有帮助

$('#select_tag_element').select2({
closeOnSelect: false,
multiple: true,
placeholder: 'Assign a new tag',
tags: true,
tokenSeparators: [","],
ajax: {
url: "search_url",
dataType: 'json',
type: 'GET',
delay: 250,
data: function (params) {
return {
search: params.term,
page: params.page
};
},
processResults: function (data) {
var newData = [];
data.forEach(function (i,item) {
newData.push({
id: i.id //id part present in data
, text: i.name //string to be displayed
});
});

return {
results: newData
};
},
cache: true
},
formatResult: function(data) {
return data.name;
},
formatSelection: function(data) {
return data.id;
},
escapeMarkup: function(m) {
return m;
}
});

关于javascript - Select2 - 结果未在使用 AJAX 的下拉列表中列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34305821/

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