【发布时间】:2017-11-10 01:27:32
【问题描述】:
我正在通过 Javascript、ajax 和 jquery 将多个值加载到 Select2 元素中。虽然数据加载正确并且加载后可以访问,但我无法在 Select2 元素中设置存储的数据。
编辑:我正在使用 Select2 v3.5。
我的代码:
HTML:
<input class="jsData" style="width: 100%" id="select2Data"></input>
Javascript:
$(".jsData").select2({
ajax: {
minimumInputLength: 4,
contentType: 'application/json',
url: '<%=Url.Action("GetData","Controller")%>',
type: 'POST',
dataType: 'json',
data: function (term) {
return {
sSearchTerm: term
};
},
results: function (data) {
return {
results: $.map(JSON.parse(data), function (item) {
return {
text: item.term,
slug: item.slug,
id: item.Id
}
})
};
}
},
multiple: true
});
因此,这将创建一个 Select2 元素,我可以在其中遍历数据库并根据我输入的内容加载数据。我还可以使用以下行访问数据(由用户输入):
$('.jsData').select2('val')
以上行返回一个数组,我可以将它存储在数据库中。我当前的目标是将存储的数据设置回 Select2 元素中。非常欢迎在这件事上提供任何帮助。
更新:我想要完成的相关链接: https://select2.github.io/examples.html#programmatic
我想要在 Select2 中设置多个元素的示例。但是,不同之处在于,Select2 文档中的示例在加载页面时会带来数据,而我将前往获取数据。
【问题讨论】:
-
在 Select2 文档中,它看起来像道具是
processResults而不是results就像您在示例代码中显示的那样。 -
我正在使用 Select2 v3.5,其中使用了
results。据我所知,processResults用于v4.0及以上版本。 -
我能够使用 v3.5.4 和不同的数据源使其工作。您能否验证您的数据源是否正在返回数据?
-
问题在于 设置 Select2 元素的值。我能够对控制器进行连续的 ajax 访问,并根据用户输入的内容检索数据,这不是问题。但是,我正在尝试 set Select2 元素中的数据。 (续) 基本上:如果我输入了一些数据,我可以访问输入数据的数组,并将其存储在数据库中。我现在的目标是从数据库中获取数据并将其加载回 Select2 元素中,以供用户将来修改。
-
以下解决方案已更新以显示如何设置值。
标签: javascript asp.net-ajax jquery-select2