onbeforeunload事件上的jQuery.ajax无法正常工作

时间:2011-03-11 10:10:27

标签: php jquery

我有一个这样的php页面

<script type="text/javascript" src="js/jquery.min.js"></script> 
<script type="text/javascript">
window.onbeforeunload  = saveBeforeExit;
function saveBeforeExit() {  
    jQuery.ajax({
        url:"truncate_logs.php",
        type:"GET",
        async:false,
        success:function(data){

        }
    })
}
</script>

//I am creating 'logs_".$t.".xls' here

<?php
header("Location: log_files/logs_".$t.".xls");
?>

我的问题在这里

位置:onbeforeunload未被调用。

4 个答案:

答案 0 :(得分:8)

我找到了答案。将async:false添加到jquery ajax请求中。

请参阅How can I get jQuery to perform a synchronous, rather than asynchronous, Ajax request?

答案 1 :(得分:4)

onbeforeunload无法正常工作,因为它编码不正确。您需要从onbeforeunload返回一个字符串,该字符串将用作将出现的窗口中的消息。

答案 2 :(得分:3)

我遇到了同样的问题并用以下方法解决了:

window.onbeforeunload = function (e) {
    var e = e || window.event;

    // For IE and Firefox
    if (e) {
        e.returnValue = '';
    }

    // For Chrome and Safari
    return '';
};

然而Opera似乎没有捕获onbeforeunload事件,那么糟糕!

答案 3 :(得分:2)

您对活动的分配可能为时过早(页面未准备好) 请尝试:

$(document).ready(function() {
  window.onbeforeunload  = saveBeforeExit;
});