3

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

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

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

4

1 回答 1

5

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

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

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

于 2010-11-20T23:00:46.747 回答