【发布时间】:2016-06-29 10:18:53
【问题描述】:
我使用select2 作为autocomplete 并选择多个选项。下面是我如何initializeselect2
$(".selectpickerphone").select2({
allowClear: true,
minimumInputLength: 2,
ajax: {
cache: false,
dataType: "json",
type: "GET",
url: "@Url.Action("GetContactNumbers ", "HMController")",
data: function(searchTerm) {
return searchTerm;
},
results: function(data) {
debugger;
if (data.isUser) {
return;
}
return {
results: $.map([data], function(item) {
return {
text: item.name,
id: item.PhoneNum,
data: item
}
})
};
}
},
formatResult: function(response) {
data = response.data;
console.log(data);
this.description =
'<div id="fmu_select2_ajax_result">' +
"<div>Nom du produit : " + data.name + "</div>" +
"<div>" +
"<div>" + data.PhoneNum+ "</div>" +
"</div>" +
'</div>';
return this.description;
},
formatSelection: function(response) {
data = response.data;
return data.PhoneNum+ " - " + data.name;
},
escapeMarkup: function(m) {
return m;
},
dropdownCssClass: "bigdrop"
});
下面是我的JsonResult - actionmethod
[HttpGet]
public JsonResult GetContactNumbers(string term)
{
using (_db = new Context())
{
_adRep = new ADRP();
var contactList = _adRep.FetchCustomerUserPhone(_db,term);
return Json(contactList, JsonRequestBehavior.AllowGet);
}
}
在网络标签中查看时,我得到以下响应。
[{"name":"Guruprasad Rao","isUser":true,"PhoneNum":"8495000049"},
{"name":"Guruprasad Rao","isUser":false,"PhoneNum":"8495000050"},
{"name":"Test","isUser":false,"PhoneNum":"8495000051"}]
但无论如何,我在ajax 的results 选项中放置的调试器没有被命中,因此也不会显示数据。我将如何接收它作为响应并显示它?
更新
我正在使用select2 v4.0.1
【问题讨论】:
-
我会把它分解成更小的函数,这样你就可以看到哪些被正确调用了。解决任何问题后,您始终可以将其重新组合在一起...
-
@bukko 正如我所说,
results回调永远不会被击中。debugger位于第一行。 -
我假设你的控制器操作代码被调用了好吗?
-
是的..它是..@bukko..这就是我得到结果的方式..
-
data是一个对象数组,所以if (data.isUser) {没有意义
标签: jquery ajax asp.net-mvc select2