我正在尝试在每个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) {
}
});
}
但它没有用。请帮助我。
答案 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();
在您的每个请求中。我希望这会有所帮助。