我将自动完成数据源更改为我的php文件,我尝试了下面的代码。但这不起作用,有人可以建议如何解决它吗?
由于
$('#search').autocomplete({
source: function( request, response ) {
$.ajax({
url: "/property_bldg.php",
dataType: "jsonp",
data: {
query: request.term
},
success: function( data ) {
response( $.map( data.suggestions, function( item ) {
return {
label: item.text,
value: item.text
}
}));
}
});
},
minLength: 1
})
返回
{query:'A',par1:'',suggestions:['AUSTIN RD','ARCH','ARGYLE ST','AMOY GDN','ARIA','AQUAMARINE','ACADEMIC TERR','APEX','ALLWAY GDN','AP LEI CHAU DRIVE'],data:[]}
更新:
$('#autocomplete_propSearch').autocomplete({
source: function( request, response ) {
$.ajax({
url: "/property_bldg.php",
dataType: "json",
data: {
query: request.term
},
complete: function (xhr, status) {
if (status === 'error' || !xhr.responseText) {
alert('Error')
}
else {
response( $.map( xhr.responseText.suggestions, function( item ) {
return {
label: item,
value: item
}
}));
}
}
});
},
minLength: 1
})
答案 0 :(得分:0)
您正在迭代字符串数组,但尝试访问它们的text
属性。将您的地图正文更改为:
return {
label: item,
value: item
}
jsFiddle的工作示例。如果这对您不起作用,请检查ajax调用是否确实成功完成(例如,通过将data
打印到控制台)。
更新:如果您的服务器确切地返回了您发布的内容,那么它不是有效的 JSONP 响应。有关正确执行JSONP的方法,请参阅this tutorial和jQuery docs(但是,如果您查询提供该页面的相同域,则使用json
更简单 - 更安全代替)。
例如,如果您的服务器正在接收查询:
http://127.0.0.1:8080/property_bldg.php?callback=jQuery161006659467399874042_1359964924178&query=a&_=1359964930143
正确的回答应该是:
jQuery161006659467399874042_1359964924178({query:'A',par1:'',suggestions:['AUSTIN RD','ARCH','ARGYLE ST','AMOY GDN','ARIA','AQUAMARINE','ACADEMIC TERR','APEX','ALLWAY GDN','AP LEI CHAU DRIVE'],data:[]});
其content-type
应为text/javascript
(不是application/json
)。如果需要,您可以自定义,请阅读docs以获取更多信息。