JQuery .ajaxStart没有被调用

时间:2012-07-09 18:17:12

标签: jquery

我正在使用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请求。

1 个答案:

答案 0 :(得分: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()。