我同时调用了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);}
用队列请求将你的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); // 时间自己定