0

私は JQuery 1.7.2 を使用しており、ajax 呼び出しが行われた場合に「isDirty」フラグがユーザーに確認メッセージをスローするようにしようとしています。ユーザーが [OK] をクリックすると、ajax 呼び出しが発生し、確認メッセージをキャンセルすると、ajax 呼び出しは発生せず、ユーザーはページに残ります。私のページには次の機能があります

...
$(function() {
    $(document).ajaxStart(function () {
        if (isDirty) {
            var status = confirm('You have unsaved changes! Are you sure you want to continue?');
            if (status) {
                isDirty = false;
            }
            return status;
        }
        return true;
    });
...
});

.ajaxStart が呼び出されることはありません。.ajaxStart を .AjaxSend に置き換えると呼び出されますが、確認をキャンセルして関数から「false」が返されると、とにかく ajax リクエストが読み込まれます。

4

1 に答える 1

0

AJAX クエリを作成してすぐにキャンセルするのは得策ではありません。AJAX クエリを作成する前に、テストを行う必要があります。

カスタム AJAX 関数を作成し、jQuery 関数をラップして、フラグを確認し、ユーザーの確認後にクエリを起動することをお勧めします。

var ajaxSecure = function() {
  if (isDirty) {
    var status = confirm('You have unsaved changes! Are you sure you want to continue?');
    if (status) {
      isDirty = false;
    } else {
      return null;
    }
  }
  return $.ajax(arguments);
};

そして、$.ajax() の代わりに ajaxSecure() を使用します。

于 2012-07-12T20:38:10.737 に答える