日期:2014-05-16  浏览次数:20595 次

使用AJAX要注意引号,否则IE6不会轻易答应你的请求

       在现在正在做的流程编排框架中有些业务需要用到ajax技术来做异步通信,这块的业务主要是在普元的活动属性页上添加业务功能的扩展页,这块的操作普元的API中讲解的非常详细,在这就不多做介绍,这里主要是说说在这块操作中遇到的问题。

 

       因为要异步来做保存业务功能,所以要用到ajax,而我们知道ajax的核心就是

      

       XMLHttpRequest,而要用到这个核心的对象,我们就要创建这个对象,这个对象的创建是区分浏览器的,主要还是在IE浏览器中有所不同。而这块出现的问题也是因为是IE浏览器。

 

       创建xmlHttpRequest对象的代码应该是这样的:

 

function createXMLHttpRequest(){

                            //表示当前浏览器不是ie,如ns、firefox

                   if(window.XMLHttpRequest){

                            xmlHttp=newXMLHttpRequest();

                   }elseif(window.ActiveXObject){

                            try{

                                     xmlHttp=newActiveXObject("Msxml2.XMLHTTP"); 

}catch(e){

         try{

                   xmlHttp=newActiveXObject("Microsoft.XMLHTTP");

}catch(e){

         alert(“您的浏览器不支持ajax!”);

}

}

                             

                   }

}

 

       这里如果不是ie浏览器就可以直接new出来,但是如果是ie浏览器的话,就要分情况了,如果是6.0+的话就是用第二种方法也就是msxml2的,如果是5.5+的话就用microsoft的。

 

       但是我们目前做开发的时候基本上都是ie6.0以上的,所以我们经常写的话就把中间的那个省去直接用Microsoft的创建。

 

       然而我们遇到的问题就是在创建的时候xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");写成了xmlHttp=new ActiveXObject(Microsoft.XMLHTTP);这样的在其他浏览器上都执行成功,但是到了IE上就出现问题了,而且IE7-9都没有问题,仅仅是IE6出现了问题,因为去客户那里部署,客户用的是IE6,由于疏忽引号没有了,始终执行不成功。通过检测发现是因为少了引号。一时的疏忽会浪费好长时间的调试。

 

       所以写这篇博客分享给大家,以后这样的问题希望大家注意。

 

1楼smszhuang1683小时前
细节的重要性