2

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

4

2 回答 2

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
}
于 2012-11-06T16:26:40.370 回答
3

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

arr=1,2,3

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

arr=1&arr=2&arr=3

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

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

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

改变:

data: "arr="+myarr,

data:{ "arr": myarr },

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

于 2012-11-06T16:31:26.163 回答