I have a jsp page where I’m trying to send multiple (two currently) ajax requests at once, but I only seem to get the second response. This guy described my problem exactly, but his solution didn’t work for me.
Here is my js code:
function createRequestObject(){
var req;
if(window.XMLHttpRequest){
//For Firefox, Safari, Opera
req = new XMLHttpRequest();
} else if(window.ActiveXObject){
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
//Error for an old browser
alert('Browser error');
}
return req;
}
function sendRequest(method, url, d){
var http = createRequestObject();
var div = d;
if(method == 'get' || method == 'GET'){
http.open(method, url, true);
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200){
var response = http.responseText;
if(response){
document.getElementById(div).innerHTML = response;
}
}
};
http.send(null);
}
}
And here is how I call that code:
QC1 Status: <div id='qc1'>blah</div>
<br />UAT2 Status: <div id='uat2'>blah2</div>
<a onclick="sendRequest('GET','index.jsp?qc1.properties=true','qc1'); " href="#">qc1</a>
<a onclick="sendRequest('GET','index.jsp?uat2.properties=true','uat2'); " href="#">uat2</a>
<a onclick="sendRequest('GET','index.jsp?qc1.properties=true','qc1'); sendRequest('GET','index.jsp?uat2.properties=true','uat2'); " href="#">both</a>
When I call one at a time they work as expected, but the “both” link only updates with the second request, even though I know it runs the index.jsp code for both.
EDIT: Ok, after fixing the obvious mistake that BalusC pointed out, it works. Fixed it in this post too.
You’re indeed sending two requests on the same URL and updating the same div. Shouldn’t the first one go to the
qc1one and update theqc1one?