Хорошо,
Я нашел решение и с удовольствием отвечу сам.
В своей первоначальной попытке я объявил переменную data в обратном вызове успеха для функции Ajax., но ничего с этим не сделал.Решение достаточно простое: добавьте функцию response (), которая будет возвращать переменную данных в случае успешного вызова ajax.Я добавлю полную исправленную функцию (хотя единственное изменение - в строке 14): Скопируйте код
$( "#birds" ).autocomplete({
source: function(request, response) {
$.ajax({
url: "london.xml",
dataType: "xml",
success: function( xmlResponse ) {
var data = $( "geoname", xmlResponse ).map(function() {
return {
value: $( "name", this ).text() + ", " +
( $.trim( $( "countryName", this ).text() ) || "(unknown country)" ),
id: $( "geonameId", this ).text()
};
});
response(data);
}
})
},
minLength: 0,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.value + ", geonameId: " + ui.item.id :
"Nothing selected, input was " + this.value );
}
});
Конечно, в этом случае ответ может быть создан напрямую, без предварительного объявления переменной данных:Скопируйте код
$.ajax({
url: "london.xml",
dataType: "xml",
success: function( xmlResponse ) {
response($( "geoname", xmlResponse ).map(function() {
return {
value: $( "name", this ).text() + ", " +
( $.trim( $( "countryName", this ).text() ) || "(unknown country)" ),
id: $( "geonameId", this ).text()
};
}));
}
})
}
(примечание: эти фрагменты функций работают при вставке в демонстрационную программу автозаполнения 'remote XML' )
Фу!Теперь давайте сделаем что-нибудь полезное с этим.
Рон