jQuery множественное декодирование данных на стороне сервера

#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. Упс … не видел вашего ответа. Я удалю мой 🙂