ajax 兼容多浏览器

参考:http://xiegangthrille.javaeye.com/blog/453747

兼容IE、Firefox浏览器ajax写法,.Net为后台服务器的结构开发

 

原文:

做了一个web方式的GPS车载定位系统,用到了自己写了个Ajax处理类,客户端界面Ext 2.0,后台C#写的一个服务器(后台服务器已经做好了不用管)。系统开发前期,本来打算将IE、FireFox做兼容,但是在FireFox做测试时,出现了问题。客户端向服务器发送指令成功,但是不能接受响应消息(IE没有问题)。

 

这段时间,做为一个Web方式的系统,我个人觉得必须兼容2种以上的主流浏览器。所以Firefox的兼容是必须的。

这个Ajax类是兼容IE,FireFox:

  

前段时间不兼容的原因,是因为没有设置Firefox的数据访问权限.(跨域)

解决方法:

           打开FireFox-->about:config-->signed.applets.codebase_principal_support设置为true;

在xmlHttp.open("GET",url,false)方法之前加以下代码:

               //如果不是IE浏览器就执行

                if(navigator.userAgent.indexOf("MSIE")<=0){
                    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
                }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
原生的 AJAX 在不同的浏览器下会有不同的写法。以下是一种常见的兼容各种浏览器的写法: ``` function createXHR() { if (typeof XMLHttpRequest != "undefined") { return new XMLHttpRequest(); } else if (typeof ActiveXObject != "undefined") { if (typeof arguments.callee.activeXString != "string") { var versions = [ "MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp" ]; for (var i = 0, len = versions.length; i < len; i++) { try { new ActiveXObject(versions[i]); arguments.callee.activeXString = versions[i]; break; } catch (ex) { // 跳过 } } } return new ActiveXObject(arguments.callee.activeXString); } else { throw new Error("No XHR object available."); } } function ajax(options) { var xhr = createXHR(); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) { options.success(xhr.responseText); } else { options.error(xhr.status); } } }; var url = options.url; var method = options.method || "GET"; var async = options.async || true; var data = options.data || null; xhr.open(method, url, async); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send(data); } ``` 这段代码中,`createXHR()` 函数用于创建 XMLHttpRequest 对象,如果浏览器支持 XMLHttpRequest,则创建 XMLHttpRequest 对象并返回;否则,尝试使用 ActiveXObject 创建 XMLHttpRequest 对象。在 `ajax()` 函数中,首先调用 `createXHR()` 函数创建 XMLHttpRequest 对象,然后设置 `xhr.onreadystatechange` 函数,当 readyState 变为 4 时,判断状态码是否在 200 到 299 之间或者是否为 304,如果是则调用 `options.success()` 函数,否则调用 `options.error()` 函数。接着设置请求的 URL、请求方法、是否异步、请求数据类型等信息,最后发送请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值