IE 6下 onreadystatechange 第一次可以 触发,而后不行了
var Ajax={};
var _xmlHttp=null;
try{
_xmlHttp=new XMLHttpRequest();
}catch (e){
try{
_xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
_xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
Ajax.get=function(_url,_fun,_bool){
var args=arguments;
switch(args.length)
{
case 1:
_fun=function(_v){};
_bool=true;
break;
case 2:
_bool=true;
break;
}
_xmlHttp.onreadystatechange=function(){
if(_xmlHttp.readyState==4&&_xmlHttp.status==200){
_fun(_xmlHttp.responseText);
}
}
_xmlHttp.open("GET",_url,_bool);
_xmlHttp.send(null);
}
而我改写成下面的就可以了??? 这是为什么???
var Ajax={};
Ajax.xmlHttp=function(){
var _xmlHttp=null;
try{
_xmlHttp=new XMLHttpRequest();
}catch (e){
try{
_xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
_xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return _xmlHttp;
}
Ajax.get=function(_url,_fun,_bool){
var _xmlHttp=this.xmlHttp();
var args=arguments;
switch(args.length)
{
case 1:
_fun=function(_v){};
_bool=true;
break;
case 2:
_bool=true;
break;
}
_xmlHttp.onreadystatechange=function(){
if(_xmlHttp.readyState==4&&_xmlHttp.status==200){
_fun(_xmlHttp.responseText);
}
}
_xmlHttp.open("GET",_url,_bool);
_xmlHttp.setRequestHeader("Accept-Encoding","text/plain");
_xmlHttp.send(null);
}
你第一次的写法 xhr在用完后很可能被当作垃圾清理了