我的ajax(在vue组件中)像这样:
<template>
...
<a class="text-right" @click="detail">
Detail
</a>
...
</template>
<script>
export default{
...
methods:{
...
detail() {
this.$http.post(window.BaseUrl + '/shop/',{data: JSON.stringify(this.data)}).then(function (response) {
...
}).catch(function(error){
...
});
}
}
}
</script>
如果用户点击链接,则会调用详细信息方法
详细用于通过ajax发送数据的方法
它会在laravel中路由
这样的路线:
Route::group(['prefix' => 'shop','as'=>'shop.'], function () {
Route::post('/', 'ShopController@index');
...
});
然后该路线将致电店控制器
控制器是这样的:
public function index(Request $request)
{
dd($request->all());
}
如果执行的代码在控制台上存在如下错误:
GET http://myshop.dev/shop 405(方法不允许)
如何解决此错误?
答案 0 :(得分:0)
您的路线和 csrf_token 出现问题。
您应该阅读http方法HTTP methods
将Route::post('/', 'ShopController@index');
更改为Route::get('/', 'ShopController@index');
显示错误是因为您在使用post方法时未发送csrf_token。使用get方法时,您没有义务包含csrf标记。
您可以在此处阅读:CSRF Protection
答案 1 :(得分:0)
window.BaseUrl以/?
结尾可能是laravel试图“消毒”DisplayIndex
(彼此相邻的2 /)
在这种情况下,laravel会发送302重定向,你可以检查一下你是否在浏览器的网络控制台中看到了这一点?
如果有302,请尝试使表单与laravel尝试使用的url匹配。