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

4

3 回答 3

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/

于 2013-08-27T13:31:30.417 回答
0

不要return arr;改用写

response(arr);

即将你的 arr 发送到你进入的回调函数response

于 2013-08-27T13:32:25.640 回答
0

这是一个非常相似的问题: how get php response 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>

这不是解决问题的真正干净的方法,但它更短。此外,如果您想在元素中显示某些内容,例如显示数组,您应该执行以下操作:

实际上,我知道有两种方法:

$("#yourElementID").html(retrievedinfo); //Where retrievedinfo would be your returned array.

或者

$("#yourElementID").text(retrievedinfo); //Where retrievedinfo would be your returned array.

这样您就可以在 Web 元素中显示您的函数返回的内容。

于 2013-08-27T13:33:11.443 回答