xmlHttpRequest对象 多次创建调用后,如何删除创建的对象!
以下JS代码可以请求html或xml:
var xmlHttpRequest=function(){
var request = null;
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
request = new XMLHttpRequest();
} catch (e) {
request = false;
}
}
}
if(request){
return request;
}else{
return alert("Error initializing XMLHttpRequest!");
}
}
function ajax_HttpRequest(url,data,callback,m){
var request=new xmlHttpRequest();
var res;
request.open("POST", url, true);
request.setRequestHeader("Content-type", (m?"text/xml":"application/x-www-form-urlencoded"));
request.setRequestHeader("Content-length", data?data.length:0);
request.setRequestHeader("Connection", "close");
request.send(data);
request.onreadystatechange=function(){
if (request.readyState == 4){
if (request.status == 200){
if(request.responseText == 0){
request=null;
return callback(0);
}else{
res=m?request.responseXML.documentElement:request.responseText;
request=null;
return callback(res);
}
}else{
res = request.status;
request=null;
return callback(res);
}
}
}
}
需要快速即时刷新数据(2次/秒),但由于网络原因,请求可能不会及时返回,形成网络堵塞,在这种情况下会有很多还未结束的
xmlHttpRequest()对象,这时调用关键请求(第一优先级别的)也会无法及时返回,请问各位大哥怎样在调用关键请求前结束所有xmlHttpRequest()对象??
------解决方案--------------------放全局变量里
遍历
------解决方案--------------------你可以在request.onreadystatechange里面加一个setTimeOut(方法名,时间);设置一下时间request.readyState
还是不等于4,就卡叉掉.或者用楼上方法,全局变量
------解决方案--------------------认同楼上意见
------解决方案--------------------不建议同一时间存在两个以上的请求实例,会有性能问题,而且在ie6下肯定浏览器崩溃,建议使用连接池来处理你的请求对象