[AJAX] bouclé sur un script de recuperation de donnés en Ajax
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:
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:
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:
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.