使用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,由于疏忽引号没有了,始终执行不成功。通过检测发现是因为少了引号。一时的疏忽会浪费好长时间的调试。
所以写这篇博客分享给大家,以后这样的问题希望大家注意。