[AJAX - PHP] Lancer des requêtes dans une boucle
Bonjour,
J'ai un petit problème avec une fonction AJAX.
J'ai un formulaire avec plein de case à cocher (une sorte de liste) et je veux lancer un traitement à chaque case cochée. Le problème est que le traitement peut être très long si je lance tout d'un coup dans un script php (environ 1 seconde de traitement par case cochée * 1000 cases environ).
Donc, j'ai décidé de faire de l'ajax pour lancer 1000 fois un script.
Le problème c'est que ça marche très bien sur FF mais pas du tout sur IE6 (pb sur l'état d'avancement).
Voici en gros ma fonction
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas cette fonctionnalité du site.");
return;
}
for (var i=0;i<checkboxes.length;i++)
{
if(checkboxes[i].type == 'checkbox')
{
if (checkboxes[i].checked == true)
{
no_cache = Math.random();
//récupérer les valeurs
var sendData = "idRub=" + checkboxes[i].value + "&idDest=" + idDest + "&idSource=" + idSource + "&nocache=" +no_cache; // défini plus haut dans le script / sans intérêt pour mon pb
xhr_object.open('post', 'duplicate.php',true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4)
{
if(xhr_object.responseText == 0)
{
iOk++;
lblOk.innerHTML = iOk;
}
else
{
iErreur++;
lblErreur.innerHTML = iErreur;
}
}
}
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr_object.send(sendData);
}
}
} |
Mon gros problème, c'est qu'il lance bien tous les script mais qu'il n'attend pas les réponse et du coup, il ne fait rien du tout (sauf la première).
Pouvez-vous m'aider?
Je sais vraiment pas quoi faire là.
Merci d'avance