【问题标题】:Returning array from PHP to jQuery autocomplete isn't working.从 PHP 到 jQuery 自动完成返回数组不起作用。
【发布时间】:2013-08-27 13:07:52
【问题描述】:
<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 数据

【问题讨论】:

  • 嗯,您正在发送电话,但您没有发送任何数据。 data: "" 也许使用 $.get() 来检索数据是一个更好的主意。
  • @Ignacio Belhot Colistro- 当您没有任何数据要发送时应该进行什么类型的呼叫?
  • 我在上面编辑了我的评论,@bhawin
  • @Ignacio Belhot Colistro - 我可以设置 type="get" 吗?

标签: jquery


【解决方案1】:

不要用return arr;代替写

response(arr);

即将您的 arr 发送到您在 response 中获得的回调函数

【讨论】:

【解决方案2】:

我检查了您的代码,发现删除“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/

【讨论】:

    【解决方案3】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      • 2012-11-02
      • 1970-01-01
      • 2015-06-08
      • 2014-04-28
      • 2011-01-05
      相关资源
      最近更新 更多