2010-10-14 2 views
1

J'ai une page jsp où j'essaye d'envoyer plusieurs requêtes ajax (deux actuellement), mais je ne reçois que la deuxième réponse. This gars a décrit mon problème exactement, mais sa solution n'a pas fonctionné pour moi.jsp avec ajax deux requêtes simultanées ne recevant qu'une seule réponse

Voici mon code js:


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); 
    } 
} 

Et voici comment j'appelle ce 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> 

Quand j'appelle un à la fois, ils fonctionnent comme prévu, mais « les deux » lier uniquement les mises à jour avec la deuxième requête, même si je sais qu'il exécute le code index.jsp pour les deux.

EDIT: Ok, après avoir corrigé l'erreur évidente que BalusC a signalé, cela fonctionne. Correction dans ce post aussi.

Répondre

2

Vous envoyez en effet deux demandes sur le même URL et la mise à jour le même div. Le premier ne devrait-il pas aller au qc1 et mettre à jour le qc1?

+0

wow ... Je veux pleurer sur les deux heures que j'ai perdues. Je vous remercie! (Cette erreur était si évidente que j'ai ressenti le besoin de me défendre: si les deux demandes avaient été envoyées aux bons endroits auparavant, mais que j'avais eu tort, et que j'avais réparé les js là où ça devait marcher, j'avais refait la page avec les deux demandes d'appel et échoué horriblement) – CrazyPenguin

+0

deuxième qc1 devrait être uat2., en éditant votre réponse – epascarello

+0

@epascarello: vraiment? Avec "update", je voulais dire l'ID div qui est passé en second argument. J'ai annulé votre modification. – BalusC

Questions connexes