在搜索了这么多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']);