用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"); } }); 

http://api.jquery.com/serializeArray/

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。