用Ajax发送数组到PHP脚本
我有arrays由function.push 。 在数组中是非常大的数据。 如何将这个最好的方法发送到PHP脚本?
dataString = ??? ; // array? $.ajax({ type: "POST", url: "script.php", data: dataString, cache: false, success: function(){ alert("OK"); } });
script.php的:
$data = $_POST['data']; // here i would like use foreach: foreach($data as $d){ echo $d; }
这个最好的方法是怎样的?
将数据string编码为JSON。
dataString = ??? ; // array? var jsonString = JSON.stringify(dataString); $.ajax({ type: "POST", url: "script.php", data: {data : jsonString}, cache: false, success: function(){ alert("OK"); } });
在你的PHP中
$data = json_decode(stripslashes($_POST['data'])); // here i would like use foreach: foreach($data as $d){ echo $d; }
注意
当您通过POST发送数据时,它需要作为键值对。
从而
data: dataString
是错的。 相反:
data: {data:dataString}
dataString = []; $.ajax({ type: "POST", url: "script.php", data:{data: $(dataString).serializeArray()}, cache: false, success: function(){ alert("OK"); } });
jQuery中的数据ajax()
函数接受匿名对象作为input,参见文档 。 所以你要找的例子是:
dataString = {key: 'val', key2: 'val2'}; $.ajax({ type: "POST", url: "script.php", data: dataString, cache: false, success: function(){ alert("OK"); } });
您也可以自己编写POST / GET查询,例如key=val&key2=val2
,但是您必须处理转义,这是不切实际的。
dataString表明数据被格式化为一个string(也可能被一个字符分隔)。
$data = explode(",", $_POST['data']); foreach($data as $d){ echo $d; }
如果dataString不是一个string,但实际上是一个数组(你的问题指出)使用JSON。