服务器未显示的 select2 结果
select2 results from server not displaying
我正在使用 Select2 4.0.3 试图让从我的服务器返回的 json 作为选项出现在我的下拉菜单中,但是当我打开下拉菜单或搜索时,结果根本没有出现在外地。
<body>
<select class="select2-student form-control">
</select>
</body>
<script>
$(document).ready(function () {
$(".select2-student").select2({
ajax: {
url: "/MyUrl",
data: function (params) {
return {
text: params.term
};
},
processResults: function (data, params) {
return {
results: data
};
}
}
});
});
</script>
当我输入匹配的文本时,我从服务器得到了预期的响应:
[{"Text":"My Student","Id":3}]
当我输入一个与服务器端标准不匹配的字符串(即与 "text" 字段中的内容不匹配)时,我在下拉列表中得到 "No results found" ,但是当返回结果时,甚至没有出现任何内容的下拉列表 - 而且我的浏览器中也没有收到任何错误。
我一整天都在这段代码上尝试了多种变体,但还没有任何效果。有什么建议吗?
为遇到相同问题的任何人更新:我在发布后不久就弄清楚了这里发生了什么 - 从服务器返回的 JSON 不是驼峰式,所以 Select2 没有读取它正确。正确的格式应该是:
[{"text":"My Student","id":3}]
回想起来太愚蠢了,但似乎 ASP.NET 默认情况下不会这样格式化。我开始使用来自 this question 的 JsonCamelCaseResult class,并且一直运行良好。
我知道这是一个很老的问题,但更好的方法是做这样的事情:
processResults: function(data) {
return {
results: jQuery.map(data, function(item) {
return {
id: item.key,
text: item.value
}
})
};
},
这样你就可以 return 映射对象的标准集合,而不用担心任何大小写。
我正在使用 Select2 4.0.3 试图让从我的服务器返回的 json 作为选项出现在我的下拉菜单中,但是当我打开下拉菜单或搜索时,结果根本没有出现在外地。
<body>
<select class="select2-student form-control">
</select>
</body>
<script>
$(document).ready(function () {
$(".select2-student").select2({
ajax: {
url: "/MyUrl",
data: function (params) {
return {
text: params.term
};
},
processResults: function (data, params) {
return {
results: data
};
}
}
});
});
</script>
当我输入匹配的文本时,我从服务器得到了预期的响应:
[{"Text":"My Student","Id":3}]
当我输入一个与服务器端标准不匹配的字符串(即与 "text" 字段中的内容不匹配)时,我在下拉列表中得到 "No results found" ,但是当返回结果时,甚至没有出现任何内容的下拉列表 - 而且我的浏览器中也没有收到任何错误。
我一整天都在这段代码上尝试了多种变体,但还没有任何效果。有什么建议吗?
为遇到相同问题的任何人更新:我在发布后不久就弄清楚了这里发生了什么 - 从服务器返回的 JSON 不是驼峰式,所以 Select2 没有读取它正确。正确的格式应该是:
[{"text":"My Student","id":3}]
回想起来太愚蠢了,但似乎 ASP.NET 默认情况下不会这样格式化。我开始使用来自 this question 的 JsonCamelCaseResult class,并且一直运行良好。
我知道这是一个很老的问题,但更好的方法是做这样的事情:
processResults: function(data) {
return {
results: jQuery.map(data, function(item) {
return {
id: item.key,
text: item.value
}
})
};
},
这样你就可以 return 映射对象的标准集合,而不用担心任何大小写。