У меня есть массив, созданный функцией .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;
}
Как лучший способ для этого?
Кодировать строку данных в 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");
}
});
serializeArray
работает путем создания строки JSOn, вам сначала нужно будет использовать json_decode
на стороне PHP
Данные в функции 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
, но вам нужно будет справиться с тем, что нецелесообразно.
data: { id_arr: [array variable goes here]}
будут доступны как массив $_POST['id_arr']
в PHP
dataString предлагает, чтобы данные форматировались в строке (и, возможно, были разделены символом).
$data = explode(",", $_POST['data']);
foreach($data as $d){
echo $d;
}
если dataString не является строкой, а infact массивом (что указывает ваш вопрос), используйте JSON.
data: { id_arr: [array variable goes here]},
будет доступна как $_POST['id_arr']
как массив в PHP
JSON.stringify
? Что не так только сdata: {data: dataString}
?