【问题标题】:How to return an array from an AJAX call?如何从 AJAX 调用中返回一个数组?
【发布时间】:2012-01-11 17:36:51
【问题描述】:

我正在寻找一种更好的解决方案来使用 jQuery 进行 AJAX 调用,让 PHP 文件返回一个数组,并让它作为 Javascript 数组出现在客户端。这是我一直在做的事情:

PHP 文件(Example.php):

<?php
    $id_numbers = array('NES-ZL','NES-AL','SNS-ZL');

    for ($i=0; $i<count($the_array); $i++){
        echo $id_numbers[$i];
        echo '|';
    }
?>

JS 文件:

id_numbers = new Array();
$.ajax({
    url:"Example.php",
    type:"POST",
    success:function(msg){
        id_numbers = msg.split('|');
    }
});

我目前的方法对我的口味来说有点太复杂了。

我想做的就是能够做到

return $id_numbers;

在 PHP 端,在 AJAX 调用后直接将其转换为 Javascript 数组。

有什么想法吗?

【问题讨论】:

    标签: javascript php jquery json ajax


    【解决方案1】:

    使用JSON 在客户端和服务器之间传输数据类型(数组和对象)。

    在 PHP 中:

    在 JavaScript 中:

    PHP:

    echo json_encode($id_numbers);
    

    JavaScript:

    id_numbers = JSON.parse(msg);
    

    正如 Wolfgang 所提到的,您可以给 jQuery 提供第四个参数来自动为您解码 JSON。

    id_numbers = new Array();
    $.ajax({
        url:"Example.php",
        type:"POST",
        success:function(msg){
            id_numbers = msg;
        },
        dataType:"json"
    });
    

    【讨论】:

    • 非常有帮助!它肯定会让一切变得更简单、更漂亮。
    • @k_sel 这几乎是一个行业标准。每个人都将它用于 AJAX。您会注意到 JSON 也是有效的 JavaScript。
    • 别忘了使用async: false
    • 对于其他菜鸟:响应必须是纯 json。我有一些HTML,一个评论。没有错误信息,只是失败了。
    • 非常感谢。对我很有帮助
    【解决方案2】:

    看看 PHP 中的json_encode()。您可以使用 dataType: "json" 参数让 $.ajax 识别它。

    【讨论】:

      【解决方案3】:

      @Xeon06,很好,但对于那些阅读此主题并像我一样尝试过的人来说,仅供参考...... 从 php 返回数组时 => json_encode($theArray)。转换为对我来说不容易操作的字符串,尤其是对于像我这样的软 js 用户。

      在 js 中,您正在尝试获取数组的值和/或数组的键,最好使用 JSON.parse,如 var jsArray = JSON.parse(data) 中的数据是从 php 返回的数组。将 json 编码的字符串转换为现在可以轻松操作的 js 对象。

      例如 foo={one:1, two:2, three:3} - 在 JSON.parse 之后得到

      for (key in foo){ console.log("foo["+ key +"]="+ foo[key]) } - 打印到你的萤火虫控制台。瞧!

      【讨论】:

      • 虽然很奇怪,但如果您正在使用多维数组,请尝试使用内部数组 json_encode ,即 $parent_array = array (json_encode($child_array)); 。它适用于我的情况。
      【解决方案4】:

      看看json_encode (http://php.net/manual/en/function.json-encode.php)。它从 PHP 5.2 开始可用。使用参数dataType: 'json' 为您解析它。然后,您将成功地将 Object 作为第一个参数。有关更多信息,请查看 jQuery 文档:http://api.jquery.com/jQuery.ajax/

      【讨论】:

        【解决方案5】:

        Php 有一个超级性感的函数,只需将数组传递给它:

        $json = json_encode($var);
        
        $.ajax({
        url:"Example.php",
        type:"POST",
        dataType : "json",
        success:function(msg){
            console.info(msg);
        }
        });
        

        简单:)

        【讨论】:

          【解决方案6】:

          好吧,我知道我有点太晚了,但我尝试了你所有的解决方案,但没有成功! 所以这就是我如何做到的。 首先,我正在开发一个 Asp.Net MVC 项目。 我唯一改变的是我的 c# 方法getInvitation

          public ActionResult getInvitation (Guid s_ID)
          {
              using (var db = new cRM_Verband_BWEntities())
              {
                  var listSidsMit = (from data in db.TERMINEINLADUNGEN where data.RECID_KOMMUNIKATIONEN == s_ID select data.RECID_MITARBEITER.ToString()).ToArray();
                  return Json(listSidsMit);
              }
          }
          

          JS 中的成功函数:

          function successFunction(result) {
              console.log(result);
          }
          

          我将方法类型从string[] 更改为ActionResult,当然最后我用Json 方法包装了我的数组listSidsMit

          【讨论】:

            猜你喜欢
            • 2012-07-11
            • 2011-09-21
            • 2019-04-10
            • 1970-01-01
            • 1970-01-01
            • 2017-11-04
            • 1970-01-01
            • 2011-04-14
            • 1970-01-01
            相关资源
            最近更新 更多