我和他之间发生了一个奇怪的问题。我无法弄清楚。
Ajax
表单提交无法在Laravel 5.5
中使用,尽管它可以在Laravel 5.2
中使用。我的意思是相同的代码适用于Laravel 5.2
但不适用于Laravel 5.5
。我附上了我的代码,以便您理解。
Html:
<form action="{{ url('/register') }}" method="POST" id="userRegistrationForm">
...........
...........
<button type="submit">Register</button>
{{ csrf_field() }}
</form>
JS:
$('#userRegistrationForm').validate({
rules:{
......
},
messages:{
......
},
submitHandler: function(form){
/* alert('Submit success!') */ /* It works, that means this function works properly */
/* But this not works */
$.ajax({
url: form.action,
type: form.method,
data: $(form).serialize(),
success: function(response){
location.reload();
},
error: function(response){
alert('error spotted');
}
});
}
});
当我提交注册时,JQuery验证工作正常。但是表单默认采用模式提交,而不是Ajax。 Javascript警报未显示错误。
答案 0 :(得分:0)
你必须停止写这样的代码
$("#userRegistrationForm").submit(function(e) {
e.preventDefault();
}).validate({
messages:{..},
rules: {...},
submitHandler: function(form) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: form.action,
type: form.method,
data: $(form).serialize(),
success: function(response){
location.reload();
},
error: function(response){
alert('error spotted');
}
});
return false; //This doesn't prevent the form from submitting.
}
});
答案 1 :(得分:0)
您是否在元标记上设置了csrf-token?
<meta name="csrf-token" content="{{ csrf_token() }}">
在设置令牌之后,您需要为ajax请求设置标头,因此您只需要在ajax请求之前添加以下代码。
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: form.action,
type: form.method,
... : ...,