#javascript #php #jquery #ajax #arrays
#javascript #php #jquery #ajax #массивы
Вопрос:
Сценарий:
У меня есть jQuery.ajax
вызов, который отправляет три массива на сервер для сохранения в базе данных. Мне нужно декодировать этот объединенный объект данных, который передается на сервер, обратно в три массива.
Сервер запускается в php
Если сценарий неоднозначен, о чем я спрашиваю, как вы снова разделяете $input
заднюю часть на три массива. (Это на php
стороне.)
Ожидаемые результаты:
Разбиение объекта обратно на три отдельных массива для обработки.
Текущие результаты:
Внутренняя ошибка сервера, когда я начинаю обрабатывать первый массив.
Примечание, прежде чем мы перейдем к коду: я все еще учусь, пожалуйста, любые советы / указания всегда приветствуются.
Код:
jQuery.ajax
jQuery.ajax({
url: "save_all.php",
type: "POST",
dataType: 'json',
data: { grades: JSON.stringify($scope.grades), commutators: JSON.stringify($scope.commutators), sGrades: JSON.stringify($scope.sGrades)},
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
}
});
save_all.php
<?php
$input = json_decode(file_get_contents("php://input"), true);
$grades = $input["grades"];
$commutators = $input["commutators"];
$sGrades = $input["sGrades"];
Комментарии:
1. 1) Разве у вас нет лучшего исключения, чем внутренняя ошибка сервера (трассировка стека, внутреннее исключение, …)? 2) Можете ли вы опубликовать HTTP-запрос?
Ответ №1:
У вас нет JSON в качестве полных данных POST, у вас есть пары ключ / значение в кодировке URL, значения которых являются JSON, поэтому вам не нужно обращаться к необработанным данным POST. Каждая из ваших строк JSON находится в стандартном $_POST
массиве.
PHP:
$grades = json_decode($_POST['grades']);
$commutators = json_decode($_POST['commutators']);
$sGrades = json_decode($_POST['sGrades']);
Примечание: dataType: 'json'
в вашем запросе ajax относится к типу данных ответа, а не к запросу.
Комментарии:
1. Упс … не видел вашего ответа. Я удалю мой 🙂