Я пытаюсь заполнить форму поиска элемента управления Select2 с результатами поиска из Active Directory.
Вот моя функция select2:
$("#networkUserSelect").select2({
ajax: {
url: '/Account/ADStartsWith',
dataType: 'json',
delay: 250,
processResults: function (data, params) {
return {
results: $.map(data, function (item)
/**http://api.jquery.com/jquery.map/ **/ {
var name;
var id;
if (typeof (item.displayname) !== "undefined") {
name = (item.displayname["0"].replace(" ", " "));
id = (item.samaccountname["0"] + "@@email.com");
return {
text: name,
slug: name,
id: id
}
}
else {
console.log("display name undefined.");
}
})
};
},
escapeMarkup: function (markup) { return markup; },
minimumInputLength: 1
});
URL-адрес указывает на C # WebMethod
, который возвращает данные Active Directory как JsonResult
.
Вот формат JsonResult
согласно Почтальону:
"results": [
{
"id": 1,
"text": "XXX",
"displayName": "XXX",
"SAMAccountName": "XXX",
"givenName": "XXX",
"sn": "XXX",
"company": "XXX"
},
{
"id": 2,
"text": "YYY",
"displayName": "YYY",
"SAMAccountName": "YYY",
"givenName": "YYY",
"sn": "YYY",
"company": "YYY"
}
]
JSON успешно отправлен обратно в AJAX. Параметры processResults
содержат ожидаемые значения.
В какой-то момент в части $.map
результаты аннулируются, и они становятся "неопределенными", и я получаю ошибку Cannot read property 'results' of undefined
.
Согласно документации Select2 , мой JSON находится в правильном формате.
Я не уверен, что мне не хватает.