json - 使用 JSON 在 select2 中加载选项时搜索不起作用
问题描述
我尝试select2
在我的选择输入中使用 (v.4.0.10) 并通过 json 文件加载选项。
JSON 文件如下:
[{
"gid": "ADF1C881",
"name": "COMPANY 1"
}, {
"gid": "d06C1AEC",
"name": "COMPANY 2"
}, {
"gid": "EB72561",
"name": "COMPANY 3"
}, {
"gid": "630BCB7",
"name": "COMPANY 4"
}, {
"gid": "A18F4D0",
"name": "COMPANY 5"
}];
HTML 代码:<select class="select2-single-ajax"></select>
我的 JS 代码是:
$(document).ready(function () {
$('.select2-single-ajax').select2({
minimumInputLength: 2,
minimumResultsForSearch: 10,
width: "100%",
ajax: {
url: URL_TO_JSON_FILE,
dataType: "json",
type: "POST",
data: function (term) {
return {
term: term.name
};
},
processResults: function (data) {
return {
results: $.map(data, function (item) {
return {
text: item.name,
id: item.gid
};
})
};
}
}
});
});
我在控制台中没有收到任何错误/警告。但是过滤器不起作用,因为它会在用户插入 2 个或更多字符时返回所有结果......
解决方案
确保您正确获取数据processResults
我使用下面的函数来设置 select2 选项
function LoadPreValueSelect2(url, objControl, caption, param,value) {
$.ajax({
url: url,
type: "GET",
data: param,
async: false,
success: function (data) {
var option = "";
$.each(data, function (index, object) {
option += "<option value='" + object.id + "'>" + object.text + "</option>";
});
$(objControl).html(option);
objControl.select2({
placeholder: caption
});
if (value)
$(objControl).val(value).trigger("change");
}
})
};
推荐阅读
- r - 将 Excel .xlsx 转换为 R 中的向量列表
- r - 是否可以在 R DT 包中保存编辑
- php - 比较PHP多维数组中的当前元素与前一个元素
- typescript - TypeScript 上的重载和回调
- ios - NSTimer retainCount 在失效后不为零
- amazon-web-services - 如何在动态启动的 Windows EC2 实例上处理 https / 安全 Web 套接字的 SSL 证书?
- python - 根据值对数组应用不同的函数
- javascript - Javascript:拒绝成功的承诺
- ios - iOS 在 PM 和 AM 之间设置 datepicker TimeMode 最小和最大日期
- scala - 根据多个条件过滤列:Scala Spark