使用Ajax将数组发送到PHP脚本

Pau*_*uck 44 javascript php ajax jquery

我有函数.push制作的数组.在数组中是非常大的数据.如何将此发送到PHP脚本?

   dataString = ??? ; // array?
   $.ajax({
        type: "POST",
        url: "script.php",
        data: dataString, 
        cache: false,

        success: function(){
            alert("OK");
        }
    });
Run Code Online (Sandbox Code Playgroud)

script.php的:

  $data = $_POST['data'];

  // here i would like use foreach:

  foreach($data as $d){
     echo $d;
  }
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?

xbo*_*nez 110

将数据字符串编码为JSON.

dataString = ??? ; // array?
var jsonString = JSON.stringify(dataString);
   $.ajax({
        type: "POST",
        url: "script.php",
        data: {data : jsonString}, 
        cache: false,

        success: function(){
            alert("OK");
        }
    });
Run Code Online (Sandbox Code Playgroud)

在你的PHP中

$data = json_decode(stripslashes($_POST['data']));

  // here i would like use foreach:

  foreach($data as $d){
     echo $d;
  }
Run Code Online (Sandbox Code Playgroud)

注意

当您通过POST发送数据时,它需要作为键值对.

从而

data: dataString

是错的.相反:

data: {data:dataString}

  • 为什么要使用`JSON.stringify`?只有`data:{data:dataString}`有什么问题? (13认同)
  • 那你就不需要`json_decode`,`$ _POST ['data']`已经是一个数组. (12认同)
  • 友情提醒始终验证您的帖子值,让他们四处游荡. (4认同)

Joh*_*n x 8

 dataString = [];
   $.ajax({
        type: "POST",
        url: "script.php",
        data:{data: $(dataString).serializeArray()}, 
        cache: false,

        success: function(){
            alert("OK");
        }
    });
Run Code Online (Sandbox Code Playgroud)

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

  • 我建议删除`serializeArray`,然后执行`data:{data:dataString}`.那么`$ _POST ['data']`将是一个数组. (7认同)