我试图使用ajax向Laravel后端发送数据,但是我收到了“CSRF token mismatch”错误。
首先,我已将令牌放置在html中(在body中但不在其表单内部,因为它不是整个表单,只有2个要发布的元素):
<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
然后在“文档准备就绪”时,我尝试使用ajax提交数据。
data["_token"] = jQuery('#token').val();
// Also tried this:
jQuery.ajaxSetup({
headers: {
'X-CSRF-TOKEN': jQuery('#token').val()
}
})
console.log(data) // returns the array with _token: "esOKmY8Tpr4UvhTYMhWcWui0rpvYEjJ3es7ggics"
jQuery.ajax({
type: "POST",
url: '/my-route',
data: data,
success: function() {
console.log("A");
}
});
我想要提交的数据是一个更大表单的一小部分,使用这种方法,我可以自动填充表单。这些小的HTML输入块不在任何子表单中。也许这就是问题所在?
- Form:
- A: bla // to be posted
- B: hello // to be posted
- C: smt else // no post
但是获取数值工作正常
路由:
Route::post('/my-route', 'AdminController@theFunction')->middleware('admin');
编辑:我将<input>
更改为<meta>
标记