@kirill-93

Как laravel принимает из JS массив?

Глупый вопрос, но я запутался. На клиенте есть скрипт, который отправляет на сервер данные через ajax.
Отправляет данные через axios, выглядит это так:
this.$axios.post('/someurl', {
                    param1:       'value1',
                    param2:       'value2',
                    param3:       ['value3', 'value4', 'value5']
                })

Этот запрос уходит на сервер, где принимается на стороне Laravel:
$param1 = request()->input('param1');
$param2 = request()->input('param2');
$param3 = request()->input('param3');

$param3 в итоге - это массив! Что за магия и на каком этапе она происходит? Чисто логически, я бы с клиента отправлял массив в виде строки JSON, на сервере бы принимал его и парсил. Почему все работает?
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
Stalker_RED
@Stalker_RED
По умолчанию axios действительно отправляет application/json, а не application/x-www-form-urlencoded
Можете проверить, что именно отправляется в девтулс, например.

Возможно Laravel автоматичски разворачивает это все в "обычные" поля.
UPD: Похоже, что так и есть (тыц).
В "сыром" виде json был (в версии 4.2, например) доступен через Request::json->all(), затем это убрали из документации.

Возможно в будущем (или уже?) уберут и из кода. Проверять лень.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы