我必须使用 ajax 完成 real-time table 但我仍然遇到一个错误,即 CSRF 令牌不匹配错误
I have to complete the real-time table using ajax but I am sticking with an error which is CSRF token mismatch error
我是一名 PHP 开发人员,目前正在根据我的任务转向 Laravel 框架,我必须使用 ajax 完成 real-time table 但是我遇到了一个错误,即 CSRF 令牌不匹配错误,请帮助我解决我仅发布简码的错误
ajax
$(document).ready(function(){
$('.toggle-class').change(function() {
var status = $(this).prop('checked') === true;
var id = $(this).data('id');
var csrf=$('meta[name="csrf-token"]').attr('content');
$.ajax({
type: "POST",
dataType: "json",
url: '/package/status',
data: {'status': status, 'id': id, 'XSRF-TOKEN': csrf},
success: function(data){
console.log('success '+data);
}
});
})
})
路由路径
Route::post('package/status', [App\Http\Controllers\PackageController::class,'status']);
控制器代码
public function status(Request $request){
$Package = package::find($request->id);
$Package->status = $request->status;
$Package->save();
return response()->json(['success'=>'Status change successfully.']);
}
我不知道为什么它在 headers 包含令牌时显示 CSRF 令牌不匹配一旦解决我可以采取一些 real-time 行动。
<head>
.. .. ..
<meta name="csrf-token" content="{{ csrf_token() }}">
.. .. ..
</head>
在您的 csrf 令牌主布局的 header 中添加此元标记,它将与您的 ajax 调用的 csrf 令牌相匹配,因此它有望解决您的问题。让我知道它是否有效。
$.ajax({
type: "POST",
dataType: "json",
url: '/package/status',
data: {'status': status, 'id': id, '_token': '{{ csrf_token() }}'},
success: function(data){
console.log('success '+data);
}
});
将XSRF-TOKEN
更改为_token
并像这样更改数据 {{ csrf_token() }}
试试这个:
data: {'status': status, 'id': id, '_token': '{{csrf_token()}}'},
只需为 csrf 变量使用 _token
$(document).ready(function(){
$('.toggle-class').change(function() {
var status = $(this).prop('checked') === true;
var id = $(this).data('id');
var csrf=$('meta[name="csrf-token"]').attr('content');
$.ajax({
type: "POST",
dataType: "json",
url: '/package/status',
data: {'status': status, 'id': id, '_token': csrf},
success: function(data){
console.log('success '+data);
}
});
})
})
我是一名 PHP 开发人员,目前正在根据我的任务转向 Laravel 框架,我必须使用 ajax 完成 real-time table 但是我遇到了一个错误,即 CSRF 令牌不匹配错误,请帮助我解决我仅发布简码的错误
ajax
$(document).ready(function(){
$('.toggle-class').change(function() {
var status = $(this).prop('checked') === true;
var id = $(this).data('id');
var csrf=$('meta[name="csrf-token"]').attr('content');
$.ajax({
type: "POST",
dataType: "json",
url: '/package/status',
data: {'status': status, 'id': id, 'XSRF-TOKEN': csrf},
success: function(data){
console.log('success '+data);
}
});
})
})
路由路径
Route::post('package/status', [App\Http\Controllers\PackageController::class,'status']);
控制器代码
public function status(Request $request){
$Package = package::find($request->id);
$Package->status = $request->status;
$Package->save();
return response()->json(['success'=>'Status change successfully.']);
}
我不知道为什么它在 headers 包含令牌时显示 CSRF 令牌不匹配一旦解决我可以采取一些 real-time 行动。
<head>
.. .. ..
<meta name="csrf-token" content="{{ csrf_token() }}">
.. .. ..
</head>
在您的 csrf 令牌主布局的 header 中添加此元标记,它将与您的 ajax 调用的 csrf 令牌相匹配,因此它有望解决您的问题。让我知道它是否有效。
$.ajax({
type: "POST",
dataType: "json",
url: '/package/status',
data: {'status': status, 'id': id, '_token': '{{ csrf_token() }}'},
success: function(data){
console.log('success '+data);
}
});
将XSRF-TOKEN
更改为_token
并像这样更改数据 {{ csrf_token() }}
试试这个:
data: {'status': status, 'id': id, '_token': '{{csrf_token()}}'},
只需为 csrf 变量使用 _token
$(document).ready(function(){
$('.toggle-class').change(function() {
var status = $(this).prop('checked') === true;
var id = $(this).data('id');
var csrf=$('meta[name="csrf-token"]').attr('content');
$.ajax({
type: "POST",
dataType: "json",
url: '/package/status',
data: {'status': status, 'id': id, '_token': csrf},
success: function(data){
console.log('success '+data);
}
});
})
})