我在下面的代码中尝试过“卸载”和“beforeunload”绑定,但是没有一个浏览器在发送请求:
$(window).bind('unload', function(){
$.ajax({cache: false,
dataType: "script",
url: "test.php"
});
});
有什么建议吗?
答案 0 :(得分:6)
浏览器不会等待此代码完成...它运行正常:)添加alert('hi')
以查看它是否正在运行。
您遇到的问题是unload
问题的典型问题,浏览器会在您的案例中发出请求之前很好地导航...而且它应该真的,没有您运行的代码应该必须在我被允许进入下一页之前完成。这就是unload
的行为方式。您可以将呼叫设置为同步以将用户保留在那里,但请不要执行此操作。
在窗口上创建unload
事件主要是为了清理你需要的DOM中的任何东西,更多 - 所以当垃圾收集不像现在那样好时(并且仍然没有) IE)...它并没有真正考虑到AJAX或度量标准跟踪。
答案 1 :(得分:1)
只需将选项async设置为false。
$(window).bind('unload', function(){
$.ajax({
cache: false,
async: false,
dataType: "script",
url: "test.php"
});
});