`
xiegangthrille
  • 浏览: 92009 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

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

阅读更多

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

 

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

这个Ajax类是兼容IE,FireFox:

var Ajax=function(){
    this.http_request=false;
    return{
        init:function(){
            this.createAjaxObj();
        },
        createAjaxObj:function(){
                //创建XMLHttpRequest实例 
                if (window.XMLHttpRequest) 
                {   //Mozilla 浏览器 
                    this.http_request = new XMLHttpRequest(); 
                    if (this.http_request.overrideMimeType) 
                    {//设置MiME类别 
                        this.http_request.overrideMimeType("text/xml"); 
                    }
                }else if (window.ActiveXObject) 
                { // IE浏览器 
                            try 
                            { 
                                this.http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
                            }
                            catch (e) 
                            { 
                                try 
                                { 
                                    this.http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
                                } 
                                catch (e) 
                                { 
                                } 
                            }
                        } 
                if (!this.http_request) { // 异常,创建对象实例失败 
                    //"不能创建XMLHttpRequest对象实例" 
                    window.alert("不能创建XMLHttpRequest对象实例.."); 
                    return false; 
                } 
        },
        sendRequest:function(method,url,content){
        
           
            // 确定发送请求的方式和URL以及是否异步执行下段代码 
            if (method.toLowerCase() == "get") 
            { 
                if(navigator.userAgent.indexOf("MSIE")<=0){
                    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
                }
                this.http_request.open(method, url, false); 
                this.http_request.send(null); 
            } 
            else 
            { 
                if (method.toLowerCase() == "post") 
                { 
                    this.http_request.open(method, url, false); 
                    this.http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
                    this.http_request.send(content); 
                } 
                else 
                { 
                    //http请求类别参数错误 
                    window.alert("http请求类别参数错误.."); 
                    return false; 
                } 
            } 
            //开始发起浏览请求 
            // 请求已完成 
            if (this.http_request.readyState == 4) 
            { 
                // 信息已经成功返回,开始处理信息 
                if (this.http_request.status == 200) 
                { 
                    //返回的是文本格式信息 
                    return this.http_request.responseText; 
                    //返回的XML格式文档就用alert(http_request.responseXML); 
                } 
                else 
                { 
                    //页面不正常 
                    //"您所请求的页面有异常" 
                    alert("您所请求的页面有异常"); 
                } 
            } 
        },
        processResponse:function(){
             
        },
        addParamsGET:function(sURL,key,value)
        {  
            sURL+=(sURL.indexOf("?")==-1?"?":"&");
            sURL+=(key+"="+value);
            return sURL;
        },
        addParamsPOST:function(key,value){
            var params="&";
                params+=(key+"="+value);
            return params;
        },
        getTime:function(){
            var DateTime=new Date();
            return  DateTime.getFullYear()+"-"+(DateTime.getMonth()+1)+"-"+DateTime.getDate()+" "+DateTime.getHours()+":"+DateTime.getMinutes()+":"+DateTime.getSeconds();
        }
    };
    
}

 

前段时间不兼容的原因,是因为没有设置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");
                }

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics