首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax在laravel-5.6中的MethodNotAllowedHttpException

Ajax在laravel-5.6中的MethodNotAllowedHttpException
EN

Stack Overflow用户
提问于 2018-06-21 06:42:55
回答 6查看 1.6K关注 0票数 0

我有条路

代码语言:javascript
复制
Route::post('/subscription/save','SubscriptionController@save')->name('sub.save');

这是唯一没有重复的路径,我是从这个代码中通过Ajax提交的。

代码语言:javascript
复制
$.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
$('.btn-ok').click(function(){            

        $.ajax({
            type: 'POST',
            data: {
                'card_type':$('#card_type').val(),
                'card_number':$('#card_number').val(),
                'expiry':$('#expiry').val(),
                'cvv':$('#cvv').val(),
                'name':$('#name').val(),
                'surname':$('#surname').val(),
                'address1':$('#address1').val(),
                'address2':$('#address2').val(),
                'province':$('#province').val(),
                'city':$('#city').val(),
                'country':$('#country').val(),                
                'box_id':$('#sub_box_id').val()
            } ,
            url: "{{route('sub.save')}}",
            success: function(data){
                console.log(data);
            }
        });
        $('#myModal').modal('hide');
    });   

如果我在控制台中记录数据变量,它看起来很好。这是我的控制器功能

代码语言:javascript
复制
    public function save(Request $request)
    {
     $Subscription=new Subscription;
     return $request;
    }

我尝试了返回请求,但是我再次得到这个405错误

代码语言:javascript
复制
 Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
 No message

我做错了什么?

========================我更新了文章,我在标题中使用CSRF

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-06-21 07:16:21

Mudassir --您正在收到此错误--要么您试图在.js文件中使用刀片语法.js

要么使用绝对路径,要么在blade file中使用此语法。

代码语言:javascript
复制
$('.btn-ok').click(function(){            

        $.ajax({
            type: 'POST',
            data: {
                'card_type':$('#card_type').val(),
                'card_number':$('#card_number').val(),
                'expiry':$('#expiry').val(),
                'cvv':$('#cvv').val(),
                'name':$('#name').val(),
                'surname':$('#surname').val(),
                'address1':$('#address1').val(),
                'address2':$('#address2').val(),
                'province':$('#province').val(),
                'city':$('#city').val(),
                'country':$('#country').val(),                
                'box_id':$('#sub_box_id').val()
            } ,
            url: "/subscription/save",
            success: function(data){
                console.log(data);
            }
        });
        $('#myModal').modal('hide');
    });  

其次,您正在使用POST方法,确保在请求中添加CSRF令牌。

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2018-06-21 07:14:39

405错误-方法不允许

如果它的POST方法,Laravel需要防止跨站点请求伪造的CSRF值

您可以简单地在AJAX中添加_token

代码语言:javascript
复制
var token = "{{ csrf_token() }}";

'_token':token,

最终代码

代码语言:javascript
复制
var token = "{{ csrf_token() }}";

$.ajax({
    type: 'POST',
    data: {
        '_token':token,
        'card_type':$('#card_type').val(),
        'card_number':$('#card_number').val(),
        'expiry':$('#expiry').val(),
        'cvv':$('#cvv').val(),
        'name':$('#name').val(),
        'surname':$('#surname').val(),
        'address1':$('#address1').val(),
        'address2':$('#address2').val(),
        'province':$('#province').val(),
        'city':$('#city').val(),
        'country':$('#country').val(),                
        'box_id':$('#sub_box_id').val()
    } ,
    url: "{{route('sub.save')}}",
    success: function(data){
        console.log(data);
    }
});
票数 2
EN

Stack Overflow用户

发布于 2018-06-23 07:30:50

请将/subscription/save添加到$except数组VerifyCsrfToken中间件中,然后不需要定义csrf令牌

代码语言:javascript
复制
namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [

          "/subscription/save"

    ];
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50961973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档