我使用Vue.js和Vue資源在Laravel中進行AJAX請求。在Laravel使用Vue.js和Vue資源調用AJAX
我的看法:
{{Form::open(['method' => 'post', 'class' => 'form-inline', 'id' => 'main-form'])}}
{{Form::text('param1', null, ['id' => 'param1', 'class' => 'form-control'])}}
{{Form::text('param2', null, ['id' => 'param2', 'class' => 'form-control'])}}
<input @click="sendIt($event)" type="submit" value="Check prices" class="btn btn-success btn-theme" />
{{Form::close()}}
我有JS:
var Vue = require('vue');
var VueResource = require('vue-resource');
Vue.use(VueResource);
Vue.http.headers.common['X-CSRF-TOKEN'] = $('meta[name=_token]').attr('content');
const app = new Vue({
el: '#app',
methods: {
sendIt: function (e)
{
e.preventDefault();
var token = $('[name="_token"]').val();
this.$http.post('/data').then((response) => {
console.log(response);
}, (response) => {
console.log(response);
});
}
}
路線:
Route::post('/data', '[email protected]');
和控制器:
public function data()
{
$msg = $this->test(); //method that retrieves data from db
return response()->json(['msg'=> $msg], 200);
}
它給了我後置500內部服務器錯誤
對此我有這樣的標題:
Cache-Control
Content-Type
Date
Phpdebugbar-Id
Server
Status
Transfer-Encoding
X-Powered-By
在網絡中我的數據的網站我有響應頭沒有道理,請求頭與令牌和我在請求令牌有效載荷。
如果我改變方法來獲得我有同樣的錯誤,但如果我改變方法來獲得,如果我從代碼我的控制器部分刪除,我從數據庫取回數據,只是傳遞字符串JSON(例如:
$msg = 'test';
return response()->json(['msg'=> $msg], 200);
我有成功,網頁上我可以輸出測試
所以我不知道,如果它的一些問題,令牌或別的東西 我想這:。
var token = $('[name="_token"]').val();
this.$http.post('/prices', {_token:token})
但沒有。同樣的錯誤再次。
如果我補充一點:
http: {
headers: {
X-CSRF-TOKEN: document.querySelector('#token').getAttribute('content')
}
},
我在頁面加載語法錯誤。
如果我改成這樣:
http: {
headers: {
Authorization: document.querySelector('#token').getAttribute('content')
}
}
我再次得到了內部服務器錯誤。
這是我的主視圖令牌:
<meta name="csrf-token" id="token" content="{{ csrf_token() }}">
<script>
window.Laravel = <?php echo json_encode([
'csrfToken' => csrf_token(),
]); ?>
</script>
編輯:
如果我添加圍繞x CSRF令牌,但仍我有令牌不匹配錯誤報價這部分工作。
http: {
headers: {
'X-CSRF-TOKEN': document.querySelector('#token').getAttribute('content')
}
},
你檢查了你的日誌文件嗎? ('存儲/記錄/ laravel.log')。我想可能會有相當數量的內容,因此您最好刪除該文件並再次嘗試請求,然後您應該瞭解有關錯誤的更多信息。或者,如果您轉到控制檯中的預覽選項卡,那麼錯誤也應該存在。 –
我清除了日誌文件,但沒有發生新的事情。但是在預覽中,我在VerifyCsrfToken.php第68行中得到了TokenMismatchException:所以它是關於令牌的。但是我發送了:| – KondukterCRO
你知道你使用的是什麼版本的Vue資源? –