日期:2014-05-16  浏览次数:20375 次

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 中 用异步,页面关闭会终止请求。值不会保存到数据库。
用同步就可以成功