如何将数组 jQuery.post()转换为PHP


How to jQuery.post() an array to PHP

在搜索了这么多SO问题之后,我似乎找不到解决问题的方法。我无尽的麻烦试图弄清楚。

这是发送它的位置:

var $arr = [];
$.each(obj.list, function(key, i)
{
    $arr.push(i.name);
}); 
/* A quick console.log($arr) confirms it is getting the values and pushing them on the array fine, displaying "Array [ "foo", "bar", "baz" ] */
/* EDIT */ $.post("url.php", {arr: JSON.stringify($arr)});

问题出在网址.php。这是代码:

<?php
    /* EDIT */ $arr = json_decode($_POST['arr']);
?>
<p></p>
List: <?
        foreach ($arr as $i) 
        {
            /* EDIT */ echo var_dump($i) . "<br>";
        }
        ?>
<p></p>

在页面上,它显示:

/* EDIT */ List: ["foo", "bar", "baz"]

如何使其按要求显示项目?

您正在传递一个对象,其中包含 Array: {arr: $arr} .但是,JQuery/JS 在内部调用 "$arr.toString()" 来序列化 Array,这只会导致输出的字符串 "Array"。

为了实际发送数组,您需要对其进行 JSON 编码:

 $.post("url.php", {arr: JSON.stringify($arr)});

在你的php中,你必须使用再次解码它

$arr = json_decode($_POST['arr']);

另一个问题是输出代码。在 php 中,你需要使用 . 进行连接:

foreach ($arr as $i) 
{
    echo $i . "<br>";
}

JS 端

$.post("url.php", {arr: json.Stringify($arr)});

PHP端

json_decode($_POST['arr']);