0

发生错误时,我的页面会重定向到另一个页面而不显示错误消息。

有没有办法写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);
                }
          },
    });

});

4

1 回答 1

0

您可以将其设置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其中,以便在第一次字段检查失败时不会执行它。

于 2013-09-20T12:51:45.883 回答