FireFox下Ajax同步请求onReadyStateChange不执行问题解决
2010-07-27 23:04
573 查看
在FireFox下,使用Ajax提交请求,而该请求是同步时,IE浏览器下正常使用的代码在FireFox下却不执行,主要是不执行onReadyStateChange这个方法体里面的代码,代码如下:
查了资料后发现,FireFox3下同步请求不需要等待onReadyStateChange,而直接执行后续代码,于是只要将原先代码中
xmlhttp.onReadyStateChange = stateChange; 这句注掉,然后直接调用stateChange()方法。代码如下:
综合上面的,可以对同步和异步请求做个判断,做个通用化的处理,代码如下:
测试环境:IE8+FF3.6.6
var xmlhttp = loadXMLDoc(); var startRequestMethod = function(obj){ var url = "http://www.xxxx.com?id=1"; xmlhttp.open("get", url, false); //这是个同步请求 xmlhttp.send(null); xmlhttp.onReadyStateChange = stateChange; //注意这儿 } var stateChange = function(){ if(xmlhttp.readyState == 4){ if (xmlhttp.status == 200){ //需要执行的代码 }else{ alert("操作失败!"); } } } var loadXMLDoc = function(){ var xmlhttp = null; if(window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); }else if (window.ActiveXObject){ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } return xmlhttp; }
查了资料后发现,FireFox3下同步请求不需要等待onReadyStateChange,而直接执行后续代码,于是只要将原先代码中
xmlhttp.onReadyStateChange = stateChange; 这句注掉,然后直接调用stateChange()方法。代码如下:
var startRequestMethod = function(obj){ var url = "http://www.xxxx.com?id=1"; xmlhttp.open("get", url, false); //这是个同步请求 xmlhttp.send(null); //xmlhttp.onReadyStateChange = stateChange; //注意这儿 stateChange(); }
综合上面的,可以对同步和异步请求做个判断,做个通用化的处理,代码如下:
var startRequestMethod = function(obj){ var url = "http://www.xxxx.com?id=1"; var ansyType = true; //默认异步 xmlhttp.open("get", url, ansyType); //这是个同步请求 xmlhttp.send(null); if(ansyType){ //异步 xmlhttp.onReadyStateChange = stateChange; }else{ //同步 stateChange(); } }
测试环境:IE8+FF3.6.6
相关文章推荐
- FireFox下Ajax同步请求onReadyStateChange不执行问题解决
- FireFox下Ajax同步请求onReadyStateChange不执行问题解决
- 关于“同步请求下Firefox 3中XHR的onreadystatechange事件不会触发”问题
- Firefox下的AJAX onreadystatechange问题
- Firefox下的AJAX onreadystatechange问题
- firefox下对ajax的onreadystatechange的支持情况分析及解决
- Firefox下的AJAX onreadystatechange问题
- firefox下对ajax的onreadystatechange的支持情况分析
- asp.net 结合ajax实现数据异步请求的同步执行问题
- 火狐下Ajax的onreadystatechange无法调用函数的解决方法
- ajax 异步长连接遭遇堵塞,“排序执行请求”的问题解决
- Ext的ajax同步交互方式提交时相同url只执行一次的问题解决
- ajax请求带来的问题-----通过jQuery hashchange解决
- firefox同步ajax请求报错的问题 A parameter or an operation is not supported by the underlying object
- IE8浏览器缓存问题导致Ajax的GET请求只能执行一次的解决办法
- 解决问题:onreadystatechange只触发一次
- 前端使用Jquery的getJSON方法,后台使用PHP,解决IE和火狐Firefox中存在的跨域ajax请求问题。
- 用ajax的同步请求解决登陆注册需要根据服务器返回数据判断是否能提交的问题
- Ajax 给 XMLHttpReq.onreadystatechange传递参数