我有一个Ajax调用,它发送用户表单输入以在后端处理。后端的控制器将结果发送回JSON,当表单被提交时,页面重新加载并重定向到一个空白页面,原始JSON而不是AJAX拾取的json。
这是Ajax调用:
Array.prototype.forEach
这是Laravel控制器,如果验证失败则发送Json,如果用户通过身份验证,则会重定向用户,否则返回401,要求用户登录。
<script type="text/javascript">
$(document).ready(function(){
$('form').on('submit', '#topup-form', function(e){
e.preventDefault();
$.ajax({
url: $('form').attr('action'),
method: 'post',
data: $('form').serialize(),
success: function(result){
alert(result);
},
error: function(errorData){
alert(errorData);
}
});
});
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
})
});
</script>
发生的事情是没有任何内容弹出作为警报,但用户被重定向到具有原始JSON的页面。
答案 0 :(得分:0)
我遇到过类似的问题 我通过将提交按钮类型更改为“按钮”来解决它,以便表单不会自动提交。我的ajax代码如下:
$(document).ready(function() {
$("#submit").click(function() {
var loginForm = $("#contactForm");
var formData = loginForm.serialize();
/*alert(formData);*/
$.ajax({
url: /*you URL*/,
type:'post',
data:formData,
success:function(data){
//alert(data); //for redirecting instead of alert try below code
if(data == "") { //True Case i.e. passed validation
alert('error')
}
else { //False Case: With error msg
alert(data); //$msg is the id of empty msg
}
},
error: function (data) {
/*console.log(data);*/
alert(data);
}
});
});
/*alert('Successfully Loaded');*/
});
你的php响应句柄似乎也没问题。希望这有帮助