从PHP返回到jQuery自动完成的数组不起作用。

时间:2013-08-27 13:07:52

标签: jquery

<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数据

3 个答案:

答案 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元素中显示您的函数返回的内容。