#c# #jquery #asp.net #jquery-select2
#c# #jquery #asp.net #jquery-select2
Вопрос:
Я пытаюсь реализовать управление Select2, извлекая информацию из ASP.Net Веб-сервис (webforms). Я установил точку останова в коде моего сервера, и метод вызывается и возвращает информацию, но элемент управления select2 никогда не отображает информацию, и никаких ошибок консоли не сообщается (только тот факт, что служба была запущена и возвращена). Вот вся информация:
Веб-сервис C # (ListVar — это класс, который имеет два строковых свойства: Значение и текст):
public List<ListVar> SearchUsers(string searchText, string additionalFilter)
{
return WebUserManager.SearchWebUsers(searchText, Boolean.Parse(additionalFilter));
}
JS
$(document).ready(function () {
$('#O_M_aclUser_hfMain').select2({
ajax: {
cache: true,
dataType: "json",
type: "POST",
url: 'http://localhost:54780/Services/Utilities.asmx/SearchUsers',
data: function (term, page) {
return {
searchText: term,
additionalFilter: $('#O_M_aclUser_hfAddFil').val()
};
},
results: function (data, page) {
alert('test1');
return { results: data.d };
}
},
formatResult: FormatResults,
formatSelection: FormatResults,
dropdownCssClass: 'autoCompleteSelect2',
escapeMarkup: function (m) { return m; }
});
});
function FormatResults(result) {
var markup = '<div class="AutoCompleteResult" entityValue="' result.Value '">';
markup = result.Text;
markup = '</div>';
return markup;
}
Ответ
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfListVar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<ListVar>
<Value>1</Value>
<Text>Miles McGehee</Text>
</ListVar>
<ListVar>
<Value>777</Value>
<Text>Miles McGehee</Text>
</ListVar>
</ArrayOfListVar>
Почему не вызывается мой метод JS results ajax? (Я никогда не вижу предупреждающего сообщения)
Почему не отображается информация
Комментарии:
1. Ваш ответ — xml, а не json.
2. Предполагается ли, что это должно быть в каком-либо конкретном формате json?
3. Не существует определенного формата json . Это зависит от того, что возвращает ваш метод. В вашем случае это может быть
{"ArrayOfListVar":[{"Value":"1","Text":"Miles McGehee"},{"Value":"777","Text":"Miles McGehee"}]}
Ответ №1:
Вам нужно украсить свой метод service, чтобы он отвечал в формате JSON, а не XML
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<ListVar> SearchUsers(string searchText, string additionalFilter)
{
return WebUserManager.SearchWebUsers(searchText, Boolean.Parse(additionalFilter));
}
Существует определенный формат json, который select2
ожидает. Ответом должен быть список id
и text
значения, подобные этому {"d":[{"id":"1","text":"hello"},{"id":"2","text":"world"}]}