【问题标题】:Echo/return an array in php在php中回显/返回一个数组
【发布时间】:2013-10-23 19:47:16
【问题描述】:

我试图从 php 文件中查询数据库,然后将结果(每行的 userLOC)返回给调用 Jquery 函数。

调用 Jquery:

$.post(url, data, function (data) 
    {
        alert(data);
    })

相关PHP:

 $sql = "Select * from location";
 $result = mysql_query($sql);
 $stack = array();
 while($row = mysql_fetch_array($result))
  {
     array_push($stack, $row["userLOC"]);
  }
  return $stack;

问题是我无法正确返回它,如果我“echo $stack”它不起作用,它说我试图将数组转换为字符串。如果我“回显 $stack[0]”,它将正确地给我数组中的第一个结果,所以我知道这些值被正确存储(如 $stack[1] 等),但这只会发回一个值.如果我如图所示“返回 $stack”,则不会发出任何警报,因为没有回显。我将如何取回整个数组以便我可以遍历并在 jquery 端使用它们?

【问题讨论】:

    标签: php jquery mysql post


    【解决方案1】:

    echo json_encode($stack);可以帮到你

    在 jquery 端使用jQuery.parseJSON()

    【讨论】:

      【解决方案2】:

      在 PHP 中

      $foo = array();
      echo $foo;
      

      将产生文字字符串Array 作为输出。

      您需要将数组转换为字符串。由于您正在处理 Javascript 目标,因此使用 JSON 作为这样做的完美方式:

      $foo = array('a', 'b', 'c', 'd', 'e');
      echo json_encode($foo);
      

      然后在你的 JS 代码中:

      $.get(...., function (data) {
          alert(data[1]); // spits out 'b'
      });
      

      记得告诉 jquery 你期待 JSON 输出。

      【讨论】:

      • 非常感谢,如果我现在只是 alert(data),我会看到整个数组的内容,即 "["a","b","c"]" 所以数据是到达那里,但是如果我尝试引用其中一个元素,例如 alert(data[0]) 它会给出“[”,这是第一个字符。
      • 然后它被视为一个字符串,你需要告诉 jquery 你正在获取 json,例如$.get(url, data, function, 'json');,根据文档:api.jquery.com/jQuery.get
      【解决方案3】:

      您需要将数组转换为 JSON 对象,如下所示:return json_encode($stack);

      【讨论】:

        【解决方案4】:

        您需要以可以通过 HTTP 传输到客户端并用于获取原始数据的方式包装(序列化)数据。 通常的容器格式是 XML 和 JSON。 JSON 非常适合在 JavaScript 中使用,因此请使用 PHP 函数 json_encode() 并回显结果。

        【讨论】:

          【解决方案5】:

          只需将您的数组转换为 JSON 对象并将其返回给您的 JavaScript:

          return json_encode($stack);
          

          【讨论】:

            【解决方案6】:

            你会想要使用 JSON!

            客户端:

            jQuery.post(url, data, function( data ) {
                //Data is already converted from JSON
            }, "json");
            

            服务器端:

            return json_encode($stack);
            

            Explanation

            希望这会有所帮助!

            【讨论】:

              【解决方案7】:

              正如其他人所说,您可能希望使用 json 之类的东西来包装输出:

              echo json_encode($stack);
              

              但是,如果您不是在寻找具有 JSON 格式复杂性的输出,您可以只使用 implode() 来输出一个逗号分隔的列表:

              echo implode(',',$stack);
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2011-06-10
                • 2012-06-10
                • 2013-04-04
                • 1970-01-01
                • 2014-01-31
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多