功能描述:
   用户关闭窗口时把用户flash播放器数据写入数据
问题:
    oSwf为播放器控件.....
    oSwf.js_sendDataTwo();flash播发器会调用前台js页面,调用js里有相应ajax请求,将数据存入数据库
    为不影响用户操作,ajax只能设为异步
    而现在这种情况无法写入数据库....
    想让页面等两秒,等待写入后页面关闭....
    但数据仍然无法写入....盼解决:
    1、window.onbeforeunload ajax 异步存储信息 可行方案
    2、为什么页面等2秒,数据仍不可写入?
     
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;
    }
}

解决方案 »

  1.   

    onbeforeunload 事件是不可靠的,一般不使用这个事件进行服务器端的处理。一般用它提示页面关闭是否进行保存页面的上的内容
      

  2.   

    恩哪,谢谢
    首先回调肯定不能实现的.....
    因为写数据是写数据,不能影响播放器的页面.....,使用ajax回调后在去关闭页面,会影响播放...
    也是,其它人有无其它解决方案?
    我想不行就直接用as3调java走socket,实在没办法了....
      

  3.   

    本帖最后由 net_lover 于 2012-02-13 21:33:34 编辑
      

  4.   

    谢谢了,测试时用一个confirm某些情况下确实可以发送成功.....
    但那样用户体验就不好了
      

  5.   

    用同步。我在window.onunload 中 用异步,页面关闭会终止请求。值不会保存到数据库。
    用同步就可以成功