我同时调用了2个ajax函数用于发送,这2个都等待返回结果,当第二个返回时覆盖了第一个返回结果的值,请问如何解决这个问题,谢谢各位大虾了if (xmlhttp != null){xmlhttp.onreadystatechange = function postRequestStrAnswer(){if(xmlhttp.readyState == 4 && xmlhttp.status == 200){try{var objText = getReturnStr(xmlhttp.responseText);if (state==true && objText!=null) { RestoreHtml(objText);}if (asyncfun!=null && objText!=null ) { asyncfun(objText); }}catch(e) { alert(e); }}}xmlhttp.open("POST",url,true);xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");xmlhttp.setRequestHeader("Accept-Encoding", "gzip, deflate");if (obj!=null) { postContent = postConversionStr(obj);}if (state==true) { postContent += "&" + postFormStr(); }xmlhttp.send(postContent);}
1 回答
绝地无双
TA贡献1946条经验 获得超4个赞
用队列请求
将你的ajax请求用一个队列数组保存起来
让后当第一个请求完成时调用第二个请求,或者用定时器
做法很简单,设置一个标识(bCompleted)用于判断当前请求是否完成,然后在ajax请求完成后将该标识bCompleted = true
定时器代码
var ajaxqueue = [];
var timer = setInterval(function(){
// 请求队列为空时,关闭定时器
if(ajaxquere.length == 0) {
clearInterval(timer);
return;
}
if(bCompleted) {
// 取请求队列的一个请求项
var nextAJaxRequestDataItem = ajaxqueue.shift();
// 执行ajax请求
doAjax(nextAJaxRequestDataItem );
// 设置标识为false,标识当前
bCompleted = false;
}
}, 100); // 时间自己定
- 1 回答
- 0 关注
- 239 浏览
添加回答
举报
0/150
提交
取消