发生错误时,我的页面会在另一页上重定向而不显示错误消息。
有没有办法写e.preventDefault()
;在ajax错误function()
内?或者在发生错误时阻止页面在另一页面上重定向的任何其他方法?
我无法宣布e.preventDefault()
;全球成功我正在从控制器在另一页上进行页面渲染。
这是我的ajax代码:
$('#request').on("submit", function(e) {
$(e.currentTarget).find("div.error").hide();
var _data = $(e.currentTarget).serialize();
var obj = $("#track_request").val();
if(obj == ""){
$("#track").text("Enter Request Number.");
$("#track").fadeIn(1000);
setTimeout(function() {
$("#track").fadeOut(1000);
}, 2000);
e.preventDefault();
}
$.ajax({
type: "POST" ,
url: "/track",
data: _data,
success: function(data) {
},
error: function(xhr, textStatus, errorThrown, event) {
if(obj != "" && xhr.status == 500){
$("#track").text("Enter Valid Request Number.");
$("#track").fadeIn(1000);
setTimeout(function() {
$("#track").fadeOut(1000);
}, 3000);
}
},
});
});
答案 0 :(得分:0)
您可以将e.preventDefault()
设置为第一行,然后在success
函数ajax成功时提交表单。
这样的事情:
$('#request').on("submit", function(e) {
// Added
e.preventDefault();
$(e.currentTarget).find("div.error").hide();
var _data = $(e.currentTarget).serialize();
var obj = $("#track_request").val();
if(obj == ""){
$("#track").text("Enter Request Number.");
$("#track").fadeIn(1000);
setTimeout(function() {
$("#track").fadeOut(1000);
}, 2000);
// Not needed
//e.preventDefault();
}
$.ajax({
type: "POST" ,
url: "/track",
data: _data,
success: function(data) {
// Added
$('#form_id').submit();
},
error: function(xhr, textStatus, errorThrown, event) {
if(obj != "" && xhr.status == 500){
$("#track").text("Enter Valid Request Number.");
$("#track").fadeIn(1000);
setTimeout(function() {
$("#track").fadeOut(1000);
}, 3000);
}
},
});
});
编辑:您可能还想将ajax调用添加到else
中,以便在第一次字段检查失败时不执行该操作。