【问题标题】:jQuery/javascript: use PHP return value as javaScript arrayjQuery/javascript:使用 PHP 返回值作为 javaScript 数组
【发布时间】:2013-05-07 11:10:25
【问题描述】:

是否可以从 PHP 返回值导入一个 JavaScript 数组?

假设一个 PHP 脚本 'makeArray.php' 将返回 '"first","second","third"'(不带单引号)。因此,下面的目的是提醒“第二”。

$.get(makeArray.php, function(data){
    var responseArray = new Array(data);
    alert(responseArray[1]);
    ...

但是我得到的只是'未定义'。如果我要将数组索引更改为 [0],我会得到 '"first","second","third"'。

谢谢!

【问题讨论】:

    标签: javascript jquery arrays get


    【解决方案1】:

    您可以使用 JSON。

    在 PHP 中

    $myarray = array('first','second','third');
    return json_encode($myarray);
    

    在 JavaScript 中:

    $.get(makeArray.php, function(data){
      console.log(data[1]); //=> "second"
    }, 'json');
    

    编辑

    如果您没有 PHP 5.2,那么您可以尝试回显一个字符串并在 JavaScript 中解析它:

    PHP:

    echo join('%',$myarray);
    

    JS:

    var array = data.split('%');
    

    【讨论】:

    • +1。你刚刚打败了我。也可以使用$.getJSON() 代替$.get()
    • 对于大多数希望解决与我上面类似的问题的人来说,这是一个很好的答案,但是运行 PHP 5.1.6 的服务器,所以无法实现它......
    • 确实如此。我认为 akash4eva 已经想出了解决方案。不过还是谢谢……
    • 或者在这种情况下,知道您正在发送以逗号分隔的字符串列表,只需回显开头的[,然后是值,然后是结尾的]。即时 JSON。 (是的,手动编码 JSON 通常不是一个好计划,但对于一个没有 json_encode() 的 PHP 版本的简单数组我不认为这是一个问题。)
    【解决方案2】:

    因为,您所做的是将从文件 (makeArray.php) 接收的所有数据包含到数组的第一个元素中。所以,显然它会在数组的零索引中。

    在这种情况下,您应该做的是在数组上使用 Array.split() 函数,例如 - data.split(","),根据收到的数据创建一个数组。

    【讨论】:

    • 这是一个非常漂亮的解决方案。由于我不能使用 JSON(见下文),我认为这是解决该问题的唯一方法。谢谢。
    • @Matte 如果这件事适合您,请选择我的答案作为所选答案。我会为此欠你的。感谢欣赏!
    • 是的,是的,还有几分钟系统就让我走了。
    猜你喜欢
    • 2015-04-13
    • 2014-03-19
    • 2012-04-02
    • 1970-01-01
    • 2017-05-07
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多