我正在尝试实现一个自动完成文本框,其值由返回 XML 内容的远程脚本生成。我正在使用 JQuery-1.4.3 和 JQuery-UI-1.8.5 中的自动完成小部件。
我研究了XML 数据解析一次示例的自动完成演示页面,并尝试实现注释:
这也应该作为如何解析远程 XML 数据源的参考——解析只会针对源回调中的每个请求进行。
作为测试,我正在尝试使用提供的 XML 演示来实现它。上面的评论表明自动完成“源”属性必须替换为 Ajax 调用。然而,当我在演示页面提供的函数中修改它时,我没有得到以下自动完成功能的任何结果:
$( "#birds" ).autocomplete({
source: function(request, response) {
$.ajax({
url: "london.xml",
dataType: "xml",
success: function( xmlResponse ) {
var data = $( "geoname", xmlResponse ).map(function() {
//alert($('name', this).text());
return {
value: $( "name", this ).text() + ", " +
( $.trim( $( "countryName", this ).text() ) || "(unknown country)" ),
id: $( "geonameId", this ).text()
};
}).get();
}
})
},
minLength: 0,
select: function( event, ui ) {
log( ui.item ?
"Selected: " + ui.item.value + ", geonameId: " + ui.item.id :
"Nothing selected, input was " + this.value );
}
});
尽管如此,注释掉简单的调试弹出消息表明 Ajax 调用确实设法检索用于构造数据的值。我的错在哪里?
非常感谢任何帮助!
亲切的问候,
罗恩·范登·布兰登