ajax异步处理多个请求是出现的问题

ajax异步处理多个请求是出现的问题,例如连续的两个输入框,两个都要通过计算获取相应的值,当离开第一个输入框的时候,执行第二个输入框的时候出现了问题,都到了并不是需要的值,只是暂时解决这种问题,把异步换成了同步。然后找了些资料,然来是XMLHttpRequest 设置了全局变量,多次请求的时候每个请求都要用到这个对象,ajax又是异步的,无法事先确定哪个先后。

原来:
function getXMLHttpRequest(){ 
var xmlHttpRequest = null;
 if (window.XMLHttpRequest) {  
   xmlHttpRequest = new XMLHttpRequest(); 
} else if (window.ActiveXObject) {   
  http_request = new ActiveXObject("Microsoft.XMLHTTP"); 

return xmlHttpRequest;
}
functiong getXXX(){
xmlHttpRequest = getXMLHttpRequest();   
xmlHttpRequest.onstatechange = handleResponse; 
xmlHttpRequest.open("GET", "url", null); 
xmlHttpRequest.send();
}
function handleResponse(){ 
if(xmlHttpRequest.readyState != 4) return;
 if(xmlHttpRequest.status == 200){  
 var xml = xmlHttpRequest.responseXML;   
  }
}

修改后,把XMLHttpRequest 设置了局部变量

function getXMLHttpRequest(){ 
var xmlHttpRequest = null;
 if (window.XMLHttpRequest) {  
   xmlHttpRequest = new XMLHttpRequest(); 
} else if (window.ActiveXObject) {   
  http_request = new ActiveXObject("Microsoft.XMLHTTP"); 

return xmlHttpRequest;
}
functiong getXXX(){
xmlHttpRequest = getXMLHttpRequest();   
xmlHttpRequest.onstatechange = handleResponse.setThis(xmlHttpRequest);  
xmlHttpRequest.open("GET", "url", null); 
xmlHttpRequest.send();
}

Function.prototype.setThis(){ 
var curr_function = this; 
var to_this_object = arguments[0]; 
return function(){  
 curr_function.apply(to_this_object, []);
 };
}

function handleResponse(){ 
if(xmlHttpRequest.readyState != 4) return;
 if(xmlHttpRequest.status == 200){  
 var xml = xmlHttpRequest.responseXML;   
  }
}

ps:这是刚用ajax出现的问题,现在ajax框架有很多了,用起来也比较方便,不用这么繁琐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值