window.onbeforeunload执行查询

时间:2010-11-20 22:53:49

标签: javascript jquery onbeforeunload

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

<script type="text/javascript">
window.onbeforeunload = function(){
    var used = $('#identifier').val();
    $.post('conversation.php?leave=true',{ud:used});
}
</script>

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

1 个答案:

答案 0 :(得分:5)

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

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

不要这样做,因为它会在页面中捕获用户超过需要的时间并阻止他们离开,从而导致负面体验。请注意,这也是在执行时锁定浏览器,应尽可能避免使用async: false