1

htmlで:

<form action="next.html">
   <!-- tags here -->
   <button id="prev">Prev</button>
   <button id="next">Next</button>
</form>

Javascript で:

$("form").submit (function(e) {
    e.preventDefault();
    if (e.originalEvent.explicitOriginalTarget.id == "next") {
        doPostData();
        // window.location = "next.html";
   } 
   else if (e.originalEvent.explicitOriginalTarget.id == "prev") {
        window.location = "prev.html";
   }
}

ここ$(document).ajaxErrorの例に基づいて、コードを解析するグローバルエラーハンドラーを添付しました

doPostData()基本的に POST リクエストをサーバーに送信します。これが成功すると、すべて問題ありませんが、エラーが発生した場合、フォームの送信を防ぐ方法がわかりません。エラーが点滅し、ブラウザは「次の」ページにリダイレクトされます。

これをエレガントに解決するにはどうすればよいですか?

4

1 に答える 1

0

後世のために、私はついに何が間違っていたのかを理解しました:

エラーハンドラーは正しく起動しましたが、利用可能なページがまだあったため、次のページへのリダイレクトが引き続き発生しましたwindow.location = "next.html"window.location上記のコードの行からコメントを削除するのと同様です。

上記のコードは FireFox でのみ機能する (Chrome や Safari では機能しない) ことを考慮して、基本的なセットアップを行います。

$(document).ajaxError(genericAjaxErrorHandler);

$("#prev").click(function() {
  window.location = "prev.html";
});

$("#next").click(function() {
  doPostData();
});

function doPostData() {
  // actions here

  if (allIsOk) {
      window.location = 'next.html';
  }
}

を追加しました

$('form').submit( function(e) {
  e.preventDefault();
});

確かに、しかしそれは必要ではないかもしれません。

于 2013-06-03T06:44:36.170 に答える