最近公司开发一个,要求刷新、前进、后退、离开页面,使用ajax对数据库进行操作,更新数据库中的一些信息。开始我使用yahoo yui的ajax实现。
发现IE可以实现效果,Firefox不行。原先代码如下:
<script type="text/javascript" src="../../include/yui/yahoo.js"></script>
<script type="text/javascript" src="../../include/yui/event.js"></script>
<script type="text/javascript" src="../../include/yui/connection.js"></script>
<script language="javascript" type="text/javascript">
window.onbeforeunload = function() { requestEnd(); } //页面迁移时调用此方法
function requestEnd(){
var t_id=document.getElementById("ctl00_ContentPlaceHolder2_hidaccessid").value ; // 获取要进行操作的表的ID
var url="../cmn/cmn_access.aspx?t_id=" + t_id ; //请求的URL
var rsf=YAHOO.util.Connect.asyncRequest("GET",url,""); //通过ajax来提交请求,更新数据库
}
</script>
解决办法:
1)在上面的JS中添加 return :
window.onbeforeunload = function() { return requestEnd(); } //页面迁移时调用此方法
function requestEnd(){
var t_id=document.getElementById("ctl00_ContentPlaceHolder2_hidaccessid").value ; // 获取要进行操作的表的ID
var url="../cmn/cmn_access.aspx?t_id=" + t_id ; //请求的URL
return YAHOO.util.Connect.asyncRequest("GET",url,""); //通过ajax来提交请求,更新数据库
}
缺陷:使用onbeforeunload,页面变化时,总会弹出一个对话框,确认离开当前页面。
2)将window.onbeforeunload改为window.onunload,即可完美解决。
本人小菜鸟呵呵,误打误撞解决该问题,虽然原理还不是很清楚,希望能给大家一点帮助。也让大虾来解答下。共同进步