如何在每个AJAX Post Call中获得Laravel 5.2令牌?

时间:2016-07-05 07:13:19

标签: jquery ajax laravel-5.2 blade

我正在尝试在每个AJAX Post请求中获取laravel标记,因为我没有使用laravel表单,因此没有自动检索到令牌。

HTML BODY:

<input type="hidden" id="_token" name="_token" value="{!! csrf_token() !!}">

我的代码:

function ajax_Call() {
    var formdata = $("form").serializeArray();
    token = $('#_token').val();
    $.ajax({
        url: 'url',
        type: 'POST',
        token: token;
        data: formdata,
        success: function (r) {
        }
    });
}

但它没有用。请帮助我。

3 个答案:

答案 0 :(得分:0)

将令牌添加到formData而不是AJAX参数:

function ajax_Call() {
    var formdata = $("form").serializeArray();
    formdata.append("_token", $('#_token').val());
    $.ajax({
        url: 'url',
        type: 'POST',
        data: formdata,
        success: function (r) {
        }
    });
}

还会通过标题发送令牌:

$.ajaxSetup({
    headers: {
        'X-CSRF-Token': $('#_token').val()
    }
});

答案 1 :(得分:0)

将以下标题添加到您的ajax

headers: {'X-CSRF-TOKEN': $('#_token').val();}

答案 2 :(得分:0)

尝试ajaxPrefilter,在每个ajax请求中包含令牌:

        $.ajaxPrefilter(function(options, originalOptions, xhr) { // this will run before each request
    var t = $('input[name="_token"]').val(); // or _token, whichever you are using
   if (t) {
        return xhr.setRequestHeader('X-CSRF-TOKEN', t); // adds directly to the XmlHttpRequest Object
    }
});

现在您无需添加:

var t = $('#token').val();
在您的每个请求中

。我希望这会有所帮助。