以下代码是多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);
}

qq_花开花谢_0
浏览 240回答 1
1回答

绝地无双

用队列请求将你的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); // 时间自己定
打开App,查看更多内容
随时随地看视频慕课网APP