В настоящее время у меня есть эта версия работы управления автоматическим заполнением при возврате XML из .ashx обработчика. xml похож на это:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<States>
<State>
<Code>CA</Code>
<Name>California</Name>
</State>
<State>
<Code>NC</Code>
<Name>North Carolina</Name>
</State>
<State>
<Code>SC</Code>
<Name>South Carolina</Name>
</State>
Код автоматического заполнения похож на это:
$('.autocompleteTest').autocomplete(
{
source: function(request, response) {
var list = [];
$.ajax({
url: "http://commonservices.qa.kirkland.com/StateLookup.ashx",
dataType: "xml",
async: false,
data: request,
success: function(xmlResponse) {
list = $("State", xmlResponse).map(function() {
return {
value: $("Code", this).text(),
label: $("Name", this).text()
};
}).get();
}
});
response(list);
},
focus: function(event, ui) {
$('.autocompleteTest').val(ui.item.label);
return false;
},
select: function(event, ui) {
$('.autocompleteTest').val(ui.item.label);
$('.autocompleteValue').val(ui.item.value);
return false;
}
});
По различным причинам я назвал бы веб-сервис ASP.NET, но я не могу заставить его работать. Для перехода на сервис (я делаю локальную службу для хранения этого простым) запуск кода автоматического заполнения:
$('.autocompleteTest').autocomplete(
{
source: function(request, response) {
var list = [];
$.ajax({
url: "/Services/GeneralLookup.asmx/StateList",
dataType: "xml",
Этот код находится на странице в корне сайта, и GeneralLookup.asmx находится в подпапке под названием Сервисы. Но точка останова в веб-сервисе никогда не поражается, и никакой список автоматического заполнения не сгенерирован. В случае, если это имеет значение, XML, который прибывает из asmx:
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://www.kirkland.com/"><State> <Code>CA</Code> <Name>California</Name> </State> <State> <Code>NC</Code> <Name>North Carolina</Name> </State> <State> <Code>SC</Code> <Name>South Carolina</Name> </State></string>
Функционально эквивалентный, так как я никогда не использую название корневого узла в отображающемся коде. Я ничего не видел в документах jQuery о вызове .asmx сервиса от этого управления, но вызов .ajax является вызовом .ajax, правильно?
Я попробовал всевозможные пути к .asmx (~ / Сервисы/), и я даже переместил сервис, чтобы быть в том же пути для устранения этих проблем. Никакая удача с также.
Какие-либо идеи?
Я получил автозаполнение для работы с .asmx с помощью JSON. Вот пример того, что я сделал:
JavaScript:
$("#tbNameFilter").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Services/AutocompleteService.asmx/Aoi_Autocomplete",
data: "{ 'q': '" + request.term + "', 'limit': '10' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data.d, function (item) {
return {
label: item.Name,
value: item.Name
}
}))
}
});
},
minLength: 1
});
Веб-служба:
[WebMethod]
public List<FAD_Aoi> Aoi_Autocomplete(String q, int limit)