0

我正在使用 JQuery 1.7.2 并试图让一个“isDirty”标志在进行 ajax 调用时向用户抛出一条确认消息。如果用户单击确定,则应该发生 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 永远不会被调用。如果我用 .AjaxSend 替换 .ajaxStart ,它会被调用,但如果我取消确认并且从函数返回“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);
};

然后使用您的 ajaxSecure() 而不是 $.ajax()。

于 2012-07-12T20:38:10.737 回答