如何在每个 AJAX Post 调用中获取 Laravel 5.2 令牌?

How to get Laravel 5.2 token in every AJAX Post Call?

我试图在每个 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) {
        }
    });
}

但这不是working.Please帮助我。

改为将令牌添加到 formData AJAX 参数:

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

也将通过headers发送令牌:

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

将以下 header 添加到您的 ajax

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

尝试 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();

在您的每个请求中。希望对您有所帮助。