我有一个这样的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未被调用。
答案 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;
});