繁体   English   中英

执行顺序的ajax请求

[英]Performing sequential ajax request

我试图执行两个顺序的ajax请求,如:

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("POST","data.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send('url=' + url);
var x=10;
var y=20;
xmlhttp.open("POST","datatest.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send('x=' + x, 'y=' + y);

不给出错误,但是说:

POST http://dev01.dev/data.php Aborted 

并仅在datatest.php中显示echo结果。 我如何从data.php和datatest.php获得响应?

更新:

data.php将给出一些结果。

echo $result1;

datatest.php将给出一些结果。

echo $result2;

我想在myDiv附加以上两个结果。

如果我做

document.getElementById("myDiv").innerHTML=xmlhttp.responseText1;

然后

document.getElementById("myDiv").innerHTML=xmlhttp.responseText2;

它将替换内容。 我要附加!

我如何从data.php和datatest.php获得响应?

使用单独的 XHR对象,而不要尝试重用现有对象。 您当前的代码启动一个请求,但是随后您执行xmlhttp.open("POST","datatest.php",true); 在该请求有时间完成之前,再次对该同一个XHR对象进行操作,因此它被中止。

例如:

var xmlhttp1, xmlhttp2;
function getXHR() {
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        return new XMLHttpRequest();
    }
    else { // code for IE6, IE5
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}
xmlhttp1 = getXHR();
xmlhttp1.onreadystatechange = function () {
    if (xmlhttp1.readyState == 4 && xmlhttp1.status == 200) {
        document.getElementById("myDiv").innerHTML = xmlhttp1.responseText;
    }
};
xmlhttp1.open("POST", "data.php", true);
xmlhttp1.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp1.send('url=' + url);

var x = 10;
var y = 20;
xmlhttp2 = getXHR();
xmlhttp2.onreadystatechange = function () {
    // Presumably do someething with the result of this one, too
};
xmlhttp2.open("POST", "datatest.php", true);
xmlhttp2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp2.send('x=' + x, 'y=' + y);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM