window.onbeforeunload ajax 异步存储信息
功能描述:
用户关闭窗口时把用户flash播放器数据写入数据
问题:
oSwf为播放器控件.....
oSwf.js_sendDataTwo();flash播发器会调用前台js页面,调用js里有相应ajax请求,将数据存入数据库
为不影响用户操作,ajax只能设为异步
而现在这种情况无法写入数据库....
想让页面等两秒,等待写入后页面关闭....
但数据仍然无法写入....
盼解决:
1、window.onbeforeunload ajax 异步存储信息 可行方案
2、为什么页面等2秒,数据仍不可写入?
JScript code
window.onbeforeunload = function (){
if(oSwf){
//alert("true");
oSwf.js_sendDataTwo();
//setTimeout("oSwf.js_sendDataTwo()",1);
//sleep(2000);
//alert("sending");
}
return;
}
function sleep(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime) return;
}
}
------解决方案--------------------
onbeforeunload 事件是不可靠的,一般不使用这个事件进行服务器端的处理。一般用它提示页面关闭是否进行保存页面的上的内容
------解决方案--------------------用同步。
我在window.onunload 中 用异步,页面关闭会终止请求。值不会保存到数据库。
用同步就可以成功