Подтвердить что ты не робот

Отправить массив с Ajax в PHP скрипт

У меня есть массив, созданный функцией .push. В массиве очень большие данные. Как лучше всего отправить это на PHP script?

   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;
  }

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

4b9b3361

Ответ 1

Кодировать строку данных в 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}

Ответ 2

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

        success: function(){
            alert("OK");
        }
    });

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

Ответ 3

Данные в функции 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, но вам нужно будет справиться с тем, что нецелесообразно.

Ответ 4

dataString предлагает, чтобы данные форматировались в строке (и, возможно, были разделены символом).

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

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