我做了一个在线学习的网页,当前视频网页关闭、跳转时,需要把在线学习的时间存储到数据库中。
统计在线学习时间我已经做好,只是无法传递到数据库存储。
onunload()应该可以吧?说明一下,我使用了struts框架。这是视频页面的部分代码:<script   language="JAVASCRIPT">   
function tijiao()
{
    document.fm0.submit();
}
</script><body  onunload="javascript:tijiao()">
<FORM   name="fm0" action="/OnlineExam&Training/user.do?opt=doTijiao">
   <FONT   COLOR="#6060FF">停留时间:</FONT>
   <INPUT   type="text"  name="time_spent" size=7>
</FORM>   以上可知,当触发事件onunload()时,执行JS方法tijiao(),这样就把表单fm0里面的文本域数据提交
现在执行后总是报错,空指针异常,是opt的问题。
如果以上没看明白的话,请给出自己的想法,谢谢!
最好有代码演示

解决方案 »

  1.   

    用 ajax 提交。别用表单了找到个例子给你:http://www.sysidc.com/html/codes/Javascript_AJAX/2009/0910/114.html
    <!----表单数据提交脚本--->REG.JS 
    function GE(a){return document.getElementById(a);} 
    function Check(){ 
     if(GE('regid').value==''){GE('msg').innerHTML='ID不能为空';return false} 
     if(GE('regpassword').value==''){GE('msg').innerHTML='password 不能为空';return false} 
     var X=new ActiveXObject("Ms2.XMLHTTP"); 
     if(X){ 
      GE('regsubmit').disabled=true; 
      X.onreadystatechange=function(){ 
       if(X.readyState==4){ 
        if(X.status==200){ 
         eval(X.responseText) 
        } 
        else{GE('msg').innerHTML=X.statusText} 
       } 
       else{GE('msg').innerHTML="正在提交数据..."} 
      }; 
      X.open('POST','reg.asp',true); 
      X.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
      var SendData = 'regid='+GE('regid').value+'&regpassword='+GE('regpassword').value+'&file='+GE('f').value 
      X.send(SendData) 
     } 
     else{ 
     GE('msg').innerHTML='你的浏览器不支持XMLHttpRequest' 
     } 
    }