Javascript 选择2-结果不使用AJAX在下拉列表中列出
我使用了Javascript 选择2-结果不使用AJAX在下拉列表中列出,javascript,ajax,jquery-select2,jquery-select2-4,Javascript,Ajax,Jquery Select2,Jquery Select2 4,我使用了Select2 4.0.1,我使用了ajax根据用户输入填充结果,但是每当我搜索任何Select2未列出任何结果的内容时,我都会在ajax响应中得到正确的结果 而且,在ajax响应之后,inputbox会失去焦点 这就是我如何初始化select2- $('#select_tag_element').select2({ closeOnSelect: false, multiple: true, placeholder: 'Assign a new t
Select2 4.0.1
,我使用了ajax
根据用户输入填充结果,但是每当我搜索任何Select2未列出任何结果的内容时,我都会在ajax响应中得到正确的结果
而且,在ajax响应之后,inputbox会失去焦点
这就是我如何初始化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;
}
});
谢谢你,穆罕默德。。但这对我不起作用。我调试并发现它在下拉列表中加载了结果,但当
globalEventContext.trigger(“ajaxComplete”[jqXHR,s])时,它会删除结果下拉列表代码>这一行是在jquery.js
中执行的,非常感谢您的帮助-您的第二次更新帮助了我-我疯狂地想弄清楚为什么我的结果总是消失!