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);
            }
      },
});

});

else編集:最初のフィールドチェックが失敗したときに実行されないように、ajax 呼び出しを追加することもできます。

于 2013-09-20T12:51:45.883 に答える