<script type="text/javascript">
$(document).ready(function(){
$('#tags').autocomplete({
source:function(request,response){
$.ajax({
type: "POST",
data: "",
url: 'getplacetags.php',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var resultSet = data;
var arr=[];
for(var i in resultSet)
{
arr.push(resultSet[i])
}
return arr;
},
error: function () {
alert('failure');
}
});
}
});
});
</script>
HTML - :
<input type="text" id="tags" />
我在将数组返回到自动完成功能时遇到问题。数组arr没有在文本框中自动完成显示为什么?
从getplacetags.php中可以很好地检索json数据
答案 0 :(得分:0)
我检查了你的代码,发现删除“contentType”后它工作正常。
$('#tags').autocomplete({
source:function(request,response){
$.ajax({
type: "POST",
data: "",
url: 'http://ws.geonames.org/searchJSON',
dataType: "json",
success: function (data) {
alert('success');
},
error: function () {
alert('failure');
}
});
}
});
请在此查看工作代码: http://jsfiddle.net/Qy49d/
答案 1 :(得分:0)
请勿使用return arr;
代替
response(arr);
即。将您的arr发送到response
答案 2 :(得分:0)
这是一个非常相似的问题: how get php respone from jquery .load 如果您想要做的是从页面获取信息,而不向其发送任何数据,那么您可以执行以下操作:
<script type="text/javascript">
$.get("getplacetags.php", function(retrievedinfo) {
alert("Here's the data you requested: " + retrievedinfo);
if (retrievedinfo) {
//Success
//print out something here
}
});
</script>
这不是解决问题的真正干净方法,但它更短。 此外,如果您想在元素中显示某些内容,例如show a array,则应执行以下操作:
实际上我知道有两种方式:
$("#yourElementID").html(retrievedinfo); //Where retrievedinfo would be your returned array.
或强>
$("#yourElementID").text(retrievedinfo); //Where retrievedinfo would be your returned array.
这样您就可以在Web元素中显示您的函数返回的内容。