Невозможно разобрать сериализованные данные формы из запроса ajax в массив php - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь проанализировать данные, отправленные из запроса $.pjax, в массив php. Я пробовал с parse_str, но NULL возвращается. Также с unserialize() результат был: unserialize(): Error at offset 0 of 210 bytes Как правильно это сделать? Мой код выглядит так:

function loadNewProducts() {
    $.pjax.defaults.timeout = false
    $.pjax({
        url: location.href.split('?')[0],
        data: {
            form: $("#dynamic-form-new-products").serialize()
        },
        container: "#new_products"
    })
}

Параметр $_GET['form'] выглядит следующим образом:

string(210) "_csrf-backend=BaUAnGywhydYkWrYU6tBNwyju5ofhIwAw0AO60naP4NP_DHzCIbzHhPnL5Ef7wZSXtXZ2F72uzmkbT6gBZFo1g%3D%3D&NewProduct%5B0%5D%5Bproduct_id%5D=2&NewProduct%5B0%5D%5Bstart_date%5D=&NewProduct%5B0%5D%5Bend_date%5D="

1 Ответ

0 голосов
/ 05 ноября 2018

Если вы не используете параметр $ output, вы можете увидеть эту проблему из-за того, что начальное подчеркивание недопустимо в качестве начала идентификатора переменной PHP. Без $ output это приведет к переменной с именем $_csrf-backend, которая не разрешена. Я не могу проверить это сам, но рекомендуется следующее использование на PHP.net:

parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

Пример источника

Еще одна вещь, которую я бы порекомендовал, это попытаться разобрать всю строку запроса $_SERVER['QUERY_STRING']

...