Bonjour,

voila j'ai commencer il y a deux jours une petite application et je rencontre un petit souci. Je vous explique.

Mon application fait se lance et appel un premier script Ajax (asynchrone) qui a pour tache de remplir des champs dans une base de donnée (ce script est long mais fonctionne correctement). Ensuite, pendant que le premier script tourne, mon application appel un second script toute les deux secondes. Celui si récupère simplement les champs remplis par le 1er script pour les ajouté dans une div.

Chaqun des champs remplit par le premier script contient une valeur 'flag' qui determine si elle a deja été recoleté par le second (qui la modifie lors de son passage).


Le probleme est que le second script semble parcouri tout les champs (tout les flags change bien), mais peu de valeurs son ajouté dans la div...

je vous met un peut de code:
fonction appelant le second script
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
function callGetResponce(idSearch, idSession)
  {
    _xmlHttp=getXMLHTTP();
    if(_xmlHttp&&_xmlHttp.readyState!=0){
      alert("in");
      _xmlHttp.abort()
    }
    if(_xmlHttp){
      //appel à l'url distante
      _xmlHttp.open("GET", 'getResponce.php?idr='+idSearch+'&ids='+idSession,true);
      _xmlHttp.onreadystatechange=function() {
        if(_xmlHttp.readyState==4&&_xmlHttp.responseXML) {
          var liste = traiteXml(_xmlHttp.responseXML, idSearch, idSession);
            sleep('3000', idSearch, idSession);
        }
      }
      // envoi de la requête
      _xmlHttp.send(null)
    }
  }

fonction qui permet le sleep avant de rappeler le second script
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
  function sleep(time, idSearch, idSession) 
  {
    setTimeout("callGetResponce('"+idSearch+"', '"+idSession+"')", time);
  }
fonction qui parcoure les valeurs retournées par le second script pour les ajoutées dans la div (via la fonction addResult)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
function traiteXml(xmlDoc, id, idSession) 
  {
    if (finished != -1)
      finished++;
 
    var options = xmlDoc.getElementsByTagName('*');
    for (var i=1; i < options.length -1 ; i++) 
    {
      addResult(options[i].firstChild.data, link);
    }
  }

Je pense que le problème vient du faite que les différents appels au second script se chevauche...je suis en train de vérifier cela

merci pour votre aide.

Elyass.