我使用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/编辑)

09-11 19:03
查看更多