Веб-сервисы Me и ASMX не включаются. Мы спорим. Она приводит аргументы, которые мы имели в прошлом. Это боль. Наши отношения на камнях!
У меня есть веб-сервис ASMX, который я не сериализовал с библиотекой Newtonsoft (как объяснено здесь: http://encosia.com/2011/04/13/asp-net-web-services-mistake-manual-json-serialization/). Это выглядит так:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string[] GetCitiesWithState(string isoalpha2, string prefixText)
{
var dict = AtomicCore.CityObject.GetCitiesInCountryWithStateAutocomplete(isoalpha2, prefixText);
string[] cities = dict.Values.ToArray();
return cities;
}
Достаточно просто, верно? Возвращается при поиске new
:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<string>New Orleans, Louisiana</string>
<string>New York, New York</string>
</ArrayOfString>
Я ожидал JSON, но после небольшого прочтения кажется, что я не должен пытаться сериализовать вывод - это должно произойти, верно? В любом случае, у меня есть следующий JQuery на внешнем интерфейсе:
$('#<%=txtCity.ClientID%>').autocomplete('<%=ResolveUrl("~/AtomicService/Assets.asmx/GetCitiesWithState")%>', {
dataType: 'json',
httpMethod: 'POST',
contentType: 'application/json; charset=utf-8',
parse: function (data) {
var rows = new Array();
for (var i = 0; i < data.d.length; i++) {
rows[i] = { data: data.d[i], value: data.d[i].Value, result: data.d[i].Value };
}
return rows;
},
formatItem: function (row, i, n) {
return row.Value;
},
extraParams: {
minChars: 2,
isoalpha2: '<%=Session["BusinessCountry"].ToString()%>',
maxRows: 20,
prefixText: function () {
return $('#<%=txtCity.ClientID%>').val()
}
},
max: 20
}).result(function (event, data, formatted) {
if (data) {
alert(data['Key']);
}
});
Я вижу звонки, используя Chrome:
![what one can see in Chrome](https://i.stack.imgur.com/IXIPj.png)
И все же все происходит! Нет ошибок Jquery, нет фейерверков, нет ничего. Она игнорирует меня.
Сначала я обвинял веб-сервис, но я думаю, что это может быть связано с тем, как я анализирую и форматирую данные в jquery.
Итак, у меня вопрос , что я делаю не так и как я могу правильно настроить автозаполнение?
Помощь оценена :) 1028 *
РЕДАКТИРОВАТЬ: Это может быть не полезно, но это то, что я вижу в Fiddler:
![enter image description here](https://i.stack.imgur.com/8tCfA.png)