Отправить массив с помощью скрипта Ajax для PHP

У меня есть массив, созданный функцией .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; } 

Как лучший способ для этого?

Кодируйте строку данных в 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() принимают анонимные объекты в качестве их ввода, см. Документацию . Итак, пример того, что вы ищете:

 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 предполагает, что данные отформатированы в строке (и, возможно, обозначены символом).

 $data = explode(",", $_POST['data']); foreach($data as $d){ echo $d; } 

если dataString не является строкой, а задает массив (что указывает ваш вопрос), используйте JSON.