select2 with ajax MVC does not hit results 选项
select2 with ajax MVC does not hit results option
我正在使用 select2
作为 autocomplete
和 select 多个选项。下面是我如何 initialize
select2
$(".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
找到解决方案
我不得不在 $.ajax
中使用 processResults
而不是 results
。当我真正访问 official site 时才知道。可能已针对 version > 4.0
.
进行了更改
processResults: function(data) {
return {
results: $.map(data, function(item) {
return {
text: item.name,
id: item.PhoneNum,
data: item
}
})
};
}
随着 formatResult
和 formatSelection
在上述版本之后已更改为 templateResult
和 templateSelection
。 Docs here
我试过它在 asp.net mvc 5 中绑定。
我使用了 web 服务,Controller Http post 方法,Web Api 2 但是在 select2 的回调事件中没有使用。
使用Asp.net Generic handler
产生回调结果然后尝试绑定到select2。
我正在使用 select2
作为 autocomplete
和 select 多个选项。下面是我如何 initialize
select2
$(".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
找到解决方案
我不得不在 $.ajax
中使用 processResults
而不是 results
。当我真正访问 official site 时才知道。可能已针对 version > 4.0
.
processResults: function(data) {
return {
results: $.map(data, function(item) {
return {
text: item.name,
id: item.PhoneNum,
data: item
}
})
};
}
随着 formatResult
和 formatSelection
在上述版本之后已更改为 templateResult
和 templateSelection
。 Docs here
我试过它在 asp.net mvc 5 中绑定。
我使用了 web 服务,Controller Http post 方法,Web Api 2 但是在 select2 的回调事件中没有使用。
使用Asp.net Generic handler
产生回调结果然后尝试绑定到select2。