В настоящее время у меня есть эта версия элемента управления автозаполнения, работающая при возврате 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 находится в подпапке с именем Services. Но точка останова в веб-сервисе никогда не попадает в цель, и список автозаполнения не создается. В случае, если это имеет значение, 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 (~ / Services /), и я даже переместил службу в один и тот же путь, чтобы устранить эти проблемы. Не повезло ни с одним.
Есть идеи?