Я пытаюсь сделать простой POST с помощью VueJS 2 (с аксиомами) и Laravel 5.3. Мой метод всегда возвращает пустой массив, когда я пытаюсь напечатать $request->all()
.VueJS и Laravel - всегда необходимо отправить запрос
У меня есть следующий мета-тег в моем шаблоне лезвия:
<meta name="csrf-token" content="{{ csrf_token() }}">
я загружаю AXIOS и добавив тег X-CSRF к нему в bootstrap.js:
window.Vue = require('vue');
window.axios = require('axios');
require('vue-axios');
window.axios.defaults.headers.common['X-CSRF-Token'] = document.querySelector('meta[name="csrf-token"]').getAttribute('content')
И это является моим компонентом Vue (сокращенно для ясности):
<template>
<div class="options">
<div class="save-result" @click="saveResult()">
Save result
</div>
</div>
</template>
<script>
export default {
methods: {
saveResult: function() {
axios.post('/api/user/save-results', {'test': 'testing'}).then(response => {
console.log(response.message)
})
}
}
}
</script>
Этот маршрут ведет к очень простому контроллеру, где я просто печать моего запроса, который пуст.
public function saveResults(Request $request)
{
echo '<pre>'; print_r($request->all()) and die();
}
Я угадываю, что что-то отсутствует с настройкой заголовка CSRF, но я не уверен, что это может быть.
У Вашего сдаваемая вкладки сети в консоли браузера, чтобы посмотреть, какие данные передаются? –
Оказывается, проблема заключалась в том, что я отправлял «обычный» массив в качестве второго параметра постсотового метода axios, и он должен быть объектом. Я отправлю ответ ниже. Я не уверен, почему это неявно настроено, хотя любая идея почему? – Anonymous