用jquery ajax发送数组

时间:2012-11-06 16:24:44

标签: php jquery ajax

我有这个jquery代码:

        var myarr = ["aa","ss","dd"];

        $.ajax({
            url: "proces.php",
            data: "arr="+myarr,
            type: "POST",
            success: function () {
                alert("data is send");
            }
        });

我看到消息data is send,但在proces.php文件中我有此代码

$str = '';
foreach ($_POST['arr'] as $k=>$v) {
    $str = $str.$v;
}

$hand = fopen("t.txt","w+");
fwrite($hand,$str);

并且在文件t.txt中没有写任何内容,请告诉我哪里错了?

2 个答案:

答案 0 :(得分:5)

您可以将其发送为:

$.ajax({
    url: "proces.php",

    data: 'arr=' + JSON.stringify({arr: myarr}),

    type: "POST",
    success: function () {
        alert("data is send");
    }
});

在服务器端,您可以将其读作:

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

foreach($x in $arr->arr) {
   // stuff
}

答案 1 :(得分:3)

如果你对一个数组进行字符串化并将其附加到arr=,那么你得到:

arr=1,2,3

但是通过HTTP发送数据数组的标准方法是:

arr=1&arr=2&arr=3

PHP有额外的要求。它希望名称以[]

结尾
arr[]=1&arr[]=2&arr[]=3

不要尝试自己构建表单编码数据。让jQuery做到这一点。它默认为数组生成PHP样式的键名,并且由于在URI中具有特殊含义的字符(例如,如果您的数据包含&),将处理所需的任何转义。

变化:

data: "arr="+myarr,

data:{ "arr": myarr },

然后在PHP $_POST['arr']中将是一个数组。