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