jquery - 如何使用 Ajax 数据源对每个新请求进行 select2 下拉列表?
问题描述
我在选择框内为多个 optgroup 使用 select2 js。我从 AJAX 成功调用中获取格式化的 JSON,下面是我的代码。它附加到选择框,但它与现有数据合并。我只想在选择框中显示 Return Ajax Data。我尝试使用 select destroy 和 reinialize 但它不起作用。请帮助我了解如何使新数据仅填充在 select2 中。
$.post('/get_ajax_data/',{custom_param:1}, function(data){
var result = data.result;
$("#client1_select").select2({ data:result });
$('#client1_select').trigger("change");
});
解决方案
问题是现有的选择框没有替换为新数据,而只是附加了旧数据。
您需要在添加新项目之前清空选择(我使用了一个按钮来模拟 ajax 调用):
var result = [{
"text": "ClientName + Version data is AJAX",
"children": [{"id": "test1", "text": "test1", "disabled": true}, {
"id": "test2",
"text": "test2",
"selected": "true",
"disabled": false
}, {"id": "test3", "text": "test3", "disabled": true}]
}, {
"text": "Variant",
"children": [{"id": "1_variant", "text": "single"}, {"id": "2_variant", "text": "dual"}]
}];
$('#client1_select').select2({data: result});
$('#btn').on('click', function (e) {
$("#client1_select").empty().select2({data: result});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.8/css/select2.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.8/js/select2.min.js"></script>
<button id="btn">Click me</button>
<select id="client1_select" name="states[]" multiple="multiple">
</select>
推荐阅读
- c - 运行一个函数并检查是否已经使用 C 执行了另一个函数
- sharepoint - 无法使用 Java lib msgraph-sdk-java-dev 获取名称中带括号的驱动器项的 SharePoint 字段
- java - 试图找出字符串数组中重复字符串的数量
- nativescript - 通过 nativescript background-http 插件发送有效负载,其属性之一是数组
- node.js - 如何为“npm run”提供默认脚本?
- ios - Crashlytics Crash with NSOperationQueue (QOS: UNSPECIFIED)
- python - TypeError:“NoneType”对象不可迭代 WTForms FieldSelect
- javascript - 连接多个输入类型编号
- machine-learning - 对于任何分类算法,我们如何修改训练数据集以在少数类上获得更好的准确性?
- html - 努力垂直对齐项目框的边框?