多ajax同时请求,当服务器返回值时覆盖掉之前的请求结果,求解决方案

我同时调用了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);
}
最新回答
挂科比挂科难

2024-09-23 00:40:05

用队列请求

将你的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); // 时间自己定