当用户以任何方式离开页面时,我需要发送一个帖子请求。到目前为止,这就是我所拥有的,但它不起作用:
$(window).unload(function(){
$.post("http://localhost/project/quizTime.php",{action:"updateTime",userID:userid,quizID:quizid,newTime:currentTime*1000,rand:Math.random()},function(time)
{
});
});
通过使用单击函数替换window.unload来测试PHP代码。这完美地工作并根据需要更新所有内容,这意味着问题在于$(window).unload trigger。
答案 0 :(得分:5)
您必须使用async选项设置为false的ajax方法,如下所示:
$.ajax({
type: 'POST',
async: false,
url: 'YOUR_URL',
data: 'YOUR_DATA'
});
这样浏览器会在执行任何其他操作之前等待请求完成。
答案 1 :(得分:1)
因为$ .post是一个异步任务浏览器不会等到响应来了,请按照此解决方案中给出的答案 - $(window).unload wait for AJAX call to finish before leaving a webpage
答案 2 :(得分:1)
来自jQuery API文档
卸载事件的确切处理因浏览器的版本而异。例如,某些版本的Firefox会在跟踪链接时触发事件,但不会在窗口关闭时触发。在实际使用中,应该在所有支持的浏览器上测试行为,并与专有的beforeunload事件进行对比。
您似乎正在使用其中一个版本的Firefox来处理此事件。尝试Documentation中提到的 beforeUnload 事件。
答案 3 :(得分:-1)
如果您更换
$(window).unload(function(){
$.post("http://localhost/project/quizTime.php",{action:"updateTime",userID:userid,quizID:quizid,newTime:currentTime*1000,rand:Math.random()},function(time)
{
});
});
用这个:
$(window).unload( function () { alert("Bye now!"); } );
并测试,会发生什么? 如果出现警告,则问题出在$ .post ...