我要求POST
:
路线:
Route::post('/register','CommonController@postRegister')->name('register');
CSRF元标记:
<meta name="csrf-token" content="{{ csrf_token() }}">
$("#submitSalonForm").click(function(e) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: "/register",
type: "post",
data: new FormData($('form')[1]),
cache: false,
contentType: false,
processData: false,
success:function(response) {
return alert('Form 2 submitted');
}
});
});
例外:
有时出现异常,有时代码运行顺利,我不知道我在这里缺少什么。
答案 0 :(得分:2)
将ajax方法从post改为
<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
Ajx电话:
let formData = $('form').serializeArray();
$.ajax({
url: "/register",
type: "POST",
data: {formData, "_token": $('#token').val()},
cache: false,
datatype: 'JSON',
processData: false,
success: function (response) {
console.log(response);
},
error: function (response) {
console.log(response);
}
});
您的路线是
Route::get('/register','CommonController@showRegister')->name('register');
Ajax调用正在发出一个post请求,laravel sqwaks带有一个http异常。
修改强> Laravel 419发布错误通常与api.php和令牌授权有关
因此,尝试将令牌包含在ajax主体上,而不是像上面那样。
答案 1 :(得分:1)
除了将crsf-token值放在标头元标记中之外,您还需要在以下AJAX请求中传递该值:
dfs = [df1, df2, df3]
all_cols = set(sum([i.columns for i in dfs], []))
def add_missing_col_r(dfs):
return_dfs = []
for df in dfs:
missing_cols = all_cols - set(df.columns)
for i in sorted(missing_cols):
df = df.withColumn(i, lit(None).cast(StringType()))
return_dfs.append(df)
return return_dfs
new_dfs = add_missing_col_r(dfs)
[x.show() for x in new_dfs]
+---+----+-----+----+----+----+
| a| b| c| d| e| f|
+---+----+-----+----+----+----+
| 1|foo1| qux1|null|null|null|
| 2|bar1|quux1|null|null|null|
| 3|baz1|quuz1|null|null|null|
+---+----+-----+----+----+----+
+---+----+----+----+----+----+
| a| c| b| d| e| f|
+---+----+----+----+----+----+
| 4|foo2|null|null|null|null|
| 5|baz2|null|null|null|null|
+---+----+----+----+----+----+
+-------+-------+------+------+----+----+
| b| d| e| f| a| c|
+-------+-------+------+------+----+----+
| bar3| bar3| bar3| bar3|null|null|
| qux3| quux3| quuz3|corge3|null|null|
|grault3|garply3|waldo3| fred3|null|null|
+-------+-------+------+------+----+----+
答案 2 :(得分:0)
无需单独设置ajax。 Laravel自动生成CSRF&#34;令牌&#34;对于应用程序管理的每个活动用户会话。获取令牌:
var token = "{{ csrf_token() }}";
在data
var token = "{{ csrf_token() }}";
var formData = new FormData($('form')[1])
$.ajax({
url : '/register',
data : {_token:token,formData:formData},
type: 'post',
...
})
答案 3 :(得分:0)
好吧,我知道我来不及了,但是我确实遇到了您面临的确切问题。
我100%确定令牌已经随请求发送,但问题仍然存在。
因此,经过太多搜索,我终于可以按照以下步骤进行修复:
create-react-app