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