我使用jQuery在离开页面时向用户显示确认消息,如下所示:
var changes = false;
window.onunload =function() {
if (changes) {
$.post("check.php",{undovideokey:VID});
} else return null;
};
另一方面
<input type='submit' name='Add' value='submit ' align='right' onclick="changes = true;" />
刷新页面时,在Google Chrome浏览器中运行代码时出现问题。我已经看到很多类似的问题,但是没有有用的答案。
jQuery ajax call in onunload handler firing AFTER getting the page on a manual refresh. How do I guarantee onunload happens first?
window.onbeforeunload ajax request in Chrome
谢谢,
萨拉
最佳答案
如果我理解正确,则刷新页面后会发生AJAX请求的问题。
更改代码以触发onbeforeunload
事件并使用同步AJAX请求应可解决您的问题:
var changes = false;
window.onbeforeunload = function() {
if (changes) {
$.ajax({
async: false,
url: "check.php",
data: {
undovideokey: 'foo'
}
});
} else {
return null;
};
};
请注意,在Chrome的开发者工具中很难看到这一点,因为它不会在重新加载期间持久保存AJAX请求。您应该在服务器端或使用诸如Fiddler之类的工具来验证行为。
工作演示:http://jsfiddle.net/wq4hk/4/show(可通过http://jsfiddle.net/wq4hk/4/编辑)