Php 使用jqueryajax发送数组
我有这个jquery代码: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"); }
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 },