2013-10-28 113 views
0

我试图借此在两个连续的Ajax请求,如:执行顺序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获得响应吗?

UPDATE:

data.php将给予一定的结果。

echo $result1; 

datatest.php会给出一些结果。

echo $result2; 

我想在myDiv上面追加两个结果。

如果我做

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

然后

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

它将取代内容。我想追加它!

回答

1

我可以得到data.php和datatest.php的回应吗?

使用单独 XHR对象,而不是试图重用现有的一个。您的当前代码开始请求,但在请求有时间完成之前,您再次在同一个XHR对象上执行xmlhttp.open("POST","datatest.php",true);,因此它会中止。

例如:

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); 
+0

你能告诉我怎么可以追加到'myDiv'在xmlhttp2结果也? – user123

+0

@Karimkhan:在第一个请求中,您不会*将*附加到'myDiv',您将*替换*其内容。这两种情况下你想追加(添加到那里)吗? –

+0

我添加了更新。请参见 – user123