我有这个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
中没有写任何内容,请告诉我哪里错了?
答案 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']
中将是一个数组。