#php #javascript #json #jquery
#php #javascript #json #jquery
Вопрос:
Я программирую веб-страницу, и я действительно застрял, пытаясь отправить массив объектов JSON в мой серверный скрипт PHP.
это мой код javascript (с использованием jQuery):
var toSend = new Array();
$("input[type=checkbox]").each(
function (indice, item)
{
var dom = $(item);
var domJSON = {
id: dom.attr("value"),
checked: (dom.attr("checked") == "checked" ? true : false)
};
//put object as JSON in array:
toSend.push($.toJSON(domJSON));
}
);
$.ajax({
type:"POST",
url: "salvar_escala.php",
data: {checkbox: toSend},
success: function(response) {
$("#div_salvar").html(response);
},
error: function() {
alert("Erro");
}
}
);
И в PHP у меня есть это:
//Grab the array
$arrayFromAjax = $_POST['checkbox'];
foreach($arrayFromAjax as $aux) {
$temp = json_decode($aux, true);
$id = $temp['id'];
$value = $temp['checked'];
//This line doesn't print anything for $id and $value
echo "Id: $id | Value: $value<br />";
//This line prints an crazy string, but with right values
echo "CHEKBOX[] => $b<br />";
}
В этом коде я декодирую свои объекты в json, помещаю их в массив и отправляю. Я также пробовал, но объекты в массиве (без json), а затем преобразовал массив в json и отправил их таким образом:
$.ajax({
type:"POST",
url: "salvar_escala.php",
dataType: "json",
data: {checkbox: $.toJSON(toSend)},
success: function(response) {
$("#div_salvar").html(response);
},
error: function() {
alert("Erro");
}
}
);
Но в этом случае все еще хуже, вызывается функция ошибки.
Ответ №1:
Вы должны быть в состоянии сделать следующее в PHP
<?php
$checkboxes = json_decode($_POST['checkbox']);
foreach($checkboxes as $checkbox) {
$id = $checkbox['id'];
$val = $checkbox['value'];
print $id . ': ' . $val;
}
Проблема в том, что вы пытаетесь перебирать строку JSON без предварительного декодирования ее в массив PHP.
Комментарии:
1. Спасибо, чувак! Я был немного смущен json_encode / decode!