При возникновении ошибки моя страница перенаправляется на другую страницу без отображения сообщения об ошибке.
Есть ли способ написать e.preventDefault()
; внутри function()
ошибки 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);
}
},
});
});
Вы можете установить e.preventDefault()
как первую строку, а затем отправить форму, когда ajax будет успешным при success
работе.
Что-то вроде этого:
$('#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
чтобы он не выполнялся, когда первая проверка поля не удалась.