Select2 js - 设置 ajax 对下拉菜单的响应
Select2 js - set ajax response to dropdown
我有大量(20k 到 25k)密码列表,所以我希望用户首先搜索 3 位密码然后触发 ajax 请求以获取与 3 位匹配的密码列表。
我能够从服务器获得响应,但现在如何在 select2 下拉列表中设置此响应?
我的代码如下:
Html code
<select id="mcp_pincode">
<option value="0"> </option>
</select>
Jquery code
$('#mcp_pincode').select2({
minimumInputLength: 3,
ajax: {
type: 'get',
url: base_path + '/mcp/pincode',
data: function (params) {
return {
q: params.term
};
},
success: function (data) {
console.log(data); // server response show here.
var pincode="<option value='0'> </option>";
for(var i=0; i<data.length;i++){
// console.log(data[i].state_name);
pincode+="<option value=\""+data[i].pincode+"\">"+data[i].pincode+"</option>";
}
$('#mcp_pincode').html(pincode);
}
}
});
server response result
[{pincode:"110001"},{pincode:"110002"},{pincode:"110003"}]
Select2 JS
有自己的方式来处理 ajax 响应的结果。他们有关于如何实现这一点的非常好的文档 here。
试试看是否select 填充了所需的数据。
$('#mcp_pincode').select2({
minimumInputLength: 3,
ajax: {
type: 'get',
url: base_path + '/mcp/pincode',
dataType: "json",
data: function (params) {
return {
q: params.term
};
},
processResults: function (data, params) {
return {
results: $.map(data, function (item) {
return {
text: item.pincode,
id: item.pincode,
data: item
};
});
};
}
}
});
更新
还注意到服务器的响应无效 JSON
。格式化响应,使其看起来如下所示,
[
{
"pincode": "110001"
},
{
"pincode": "110002"
},
{
"pincode": "110003"
}
]
希望这对您有所帮助。如果您有任何问题,请在下方评论。
我有大量(20k 到 25k)密码列表,所以我希望用户首先搜索 3 位密码然后触发 ajax 请求以获取与 3 位匹配的密码列表。
我能够从服务器获得响应,但现在如何在 select2 下拉列表中设置此响应?
我的代码如下:
Html code
<select id="mcp_pincode">
<option value="0"> </option>
</select>
Jquery code
$('#mcp_pincode').select2({
minimumInputLength: 3,
ajax: {
type: 'get',
url: base_path + '/mcp/pincode',
data: function (params) {
return {
q: params.term
};
},
success: function (data) {
console.log(data); // server response show here.
var pincode="<option value='0'> </option>";
for(var i=0; i<data.length;i++){
// console.log(data[i].state_name);
pincode+="<option value=\""+data[i].pincode+"\">"+data[i].pincode+"</option>";
}
$('#mcp_pincode').html(pincode);
}
}
});
server response result
[{pincode:"110001"},{pincode:"110002"},{pincode:"110003"}]
Select2 JS
有自己的方式来处理 ajax 响应的结果。他们有关于如何实现这一点的非常好的文档 here。
试试看是否select 填充了所需的数据。
$('#mcp_pincode').select2({
minimumInputLength: 3,
ajax: {
type: 'get',
url: base_path + '/mcp/pincode',
dataType: "json",
data: function (params) {
return {
q: params.term
};
},
processResults: function (data, params) {
return {
results: $.map(data, function (item) {
return {
text: item.pincode,
id: item.pincode,
data: item
};
});
};
}
}
});
更新
还注意到服务器的响应无效 JSON
。格式化响应,使其看起来如下所示,
[
{
"pincode": "110001"
},
{
"pincode": "110002"
},
{
"pincode": "110003"
}
]
希望这对您有所帮助。如果您有任何问题,请在下方评论。