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 : 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
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