window.onbeforeunload执行查询

我正在尝试在用户离开页面时执行post查询。 我正在使用的代码是

 window.onbeforeunload = function(){ var used = $('#identifier').val(); $.post('conversation.php?leave=true',{ud:used}); }  

我在这里做什么有什么不对吗? 我在FF错误控制台中得到的结果只是说没有定义其他非相关函数/变量(因为它们正在卸载)。 我需要解决的任何提示或指示?

简单的答案是你不能可靠地在beforeunload事件中进行异步AJAX调用,它可能在它完成之前终止,因为浏览器垃圾收集页面。 你可以进行同步通话,如下所示:

 $.ajax({ type: "POST", url: 'conversation.php?leave=true', data:{ud:used}, async: false }); 

要这样做,因为它会使您的用户在页面中陷入超过需要的时间并阻止他们离开,从而导致负面体验。 请注意,这也会在执行时锁定浏览器 ,在每种情况下都应该避免使用async: false