首页 新闻 赞助 找找看

我封装了个Ajax ,IE 6下 第一次请求有效,后面就无效了不知道什么原因?

0
[已解决问题] 解决于 2011-07-22 15:42

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);
}

dbfox的主页 dbfox | 初学一级 | 园豆:2
提问于:2011-07-18 11:51
< >
分享
最佳答案
0

你第一次的写法 xhr在用完后很可能被当作垃圾清理了

 

Micheas | 菜鸟二级 |园豆:225 | 2011-07-19 18:00
但是 ,我在其他浏览器下是木问题的??
dbfox | 园豆:2 (初学一级) | 2011-07-19 18:06
可能ie 很扯淡
dbfox | 园豆:2 (初学一级) | 2011-07-22 15:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册