通过ajax发送数据时,如何解决GET ... 405(Method Not Allowed)?

时间:2017-09-05 09:39:03

标签: ajax laravel routes laravel-5.3 vuejs2

我的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(方法不允许)

如何解决此错误?

2 个答案:

答案 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匹配。