Php 使用jqueryajax发送数组

Php 使用jqueryajax发送数组,php,jquery,ajax,Php,Jquery,Ajax,我有这个jquery代码: var myarr = ["aa","ss","dd"]; $.ajax({ url: "proces.php", data: "arr="+myarr, type: "POST", success: function () { alert("data is send"); }

我有这个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
中没有写入任何内容,请告诉我哪里错了?

您可以通过以下方式发送:

$.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
}

如果将数组字符串化并将其附加到
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,


然后在PHP中,
$\u POST['arr']
将是一个数组。

JSON.stringify的输出是一个字符串,而不是数组。
data:{ "arr": myarr },