JS用POST怎么传送二维数组给PHP

有一个二维数组a[2][2],
$.post(url,{?:?},function(jdata){
//code....
});
问号的地方怎么写,还有后台PHP:$a=$_POST[?],要怎么写
不能转成字符串!!

阅读 23.4k
3 个回答

我先上Demo:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>test</title>
    <script src="js/jquery-1.11.1.min.js"></script>


<script>
    $(function(){
        var arr = [];
        for (i = 0; i < 10; i ++)
            arr[i] = [];

        var k = 0;
        for (i = 0; i < 10; i++)
            for (j = 0; j < 10; j++){
                arr[i][j] = k;
                k++;
            }

        $.post(
            'post.php', 
            {
                data : JSON.stringify(arr)
            },
            function(data) {
                document.write(data);
            }
        );
    })
</script>


</head>
<body>
</body>
</html>
<?php
    $data = $_POST['data'];
    $arr = json_decode($data);

    for ($i = 0; $i < 10; $i++){
        for ($j = 0; $j <10; $j++){
            echo $arr[$i][$j].", ";
        }
        echo "<br>";
    }

?>

解析

我使用的是JSON

Javascript端

数组转字符串:

JSON.stringify(arr); //返回字符串

字符串转数组:

JSON.parse(str);  //返回数组

php端:

字符串转数组:

json_decode($str);  //返回数组

数组转字符串:

json_encode($arr);  //返回字符串

虽然我不明白你为什么不能转成字符串,不知道使用JSON算不算是你说的“使用字符串”。
但希望能够帮助到您!

$.post(url,{"xx[0]":1,"xx[1]":2},function(){

});

xx个数不确定的可以这样

$.post(url,{"xx[]":1,"xx[]":2},function(){

});

和表单提交一个道理
jQuery最终还是会把它转成字符串

参观

{
  'param_0_0': a[0][0],
  'param_0_1': a[0][1],
  'param_1_0': a[1][0],
  'param_1_1': a[1][1]
}

post是不能传二维的东西的,最后必须把它捋平了。再者说a[2][2]四个元素也不多对吧。

突然想起来还有一个方法,用JSON.stringtifya转化成字符串,再urlencode传过去。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏