FireFox下Ajax同步请求onReadyStateChange不执行问题解决
来源:互联网 发布:淘宝 拉萨蜜摄影 编辑:程序博客网 时间:2024/05/12 15:45
在FireFox下,使用Ajax提交请求,而该请求是同步时,IE浏览器下正常使用的代码在FireFox下却不执行,主要是不执行onReadyStateChange这个方法体里面的代码,代码如下:
- 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
0 0
- FireFox下Ajax同步请求onReadyStateChange不执行问题解决
- FireFox下Ajax同步请求onReadyStateChange不执行问题解决
- FireFox下Ajax同步请求onReadyStateChange不执行问题解决
- Firefox下的AJAX onreadystatechange问题
- Firefox下的AJAX onreadystatechange问题
- ajax下onreadystatechange写法
- ajax同步请求执行顺序
- FireFox和IE 中 Ajax 同步执行
- Ajax onreadystatechange
- ie下ajax同步执行的问题
- struts2 下 ajax 请求被执行两次
- easyui+rest服务,ajax请求session过期不跳转问题解决
- ajax 请求同步执行 等完成了ajax请求 才可以继续后面操作
- 请求ajax失败或者不执行的原因
- 火狐下Ajax的onreadystatechange无法调用函数的解决方法
- Ajax之同步请求
- Ajax同步提交请求
- ajax同步请求
- 打印程序中调用者与被调用者的关系--cflow
- EditText 记事本横线效果
- SpriteKit 初探
- 百度-互联网面试题
- ujsp版本使用方法
- FireFox下Ajax同步请求onReadyStateChange不执行问题解决
- 查看内存占用
- 华为机试—元素异同比较
- 高墙里的世界
- HDOJ 题目4474 Yet Another Multiple Problem(bfs,技巧,找一个数的倍数)
- iOS开发的22个奇谲巧技
- LRU缓存介绍与实现 (Java)
- android ndk c++ 调用 JAVA程序
- 【知识导图】第二章 线性表