Bonjour,

J'ai fais mes premiers tests avec XMLHttpRequest aujourd'hui et je suis tombé sur un problème avec Internet Explorer. Voila déjà la fonction que j'utilise pour créer une instance de XMLHttpRequest :
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
var xhr;
 
function newXHR()
{
	// l'objet est crée dans la variable globale xhr
	xhr = false;
 
	// branch for native XMLHttpRequest object
	if(window.XMLHttpRequest) {
		try {
			xhr = new XMLHttpRequest();
		} catch(e) {
			xhr = false;
		}
	// branch for IE/Windows ActiveX version
	} else if(window.ActiveXObject) {
		try {
			xhr = new ActiveXObject('Msxml2.XMLHTTP');
		} catch(e) {
			try {
				xhr = new ActiveXObject('Microsoft.XMLHTTP');
			} catch(e) {
				xhr = false;
			}
		}
	}
}
 
function _evalueJavaScriptXHR()
{
	if (xhr.readyState == 4) {
		eval(xhr.responseText);
	}
}
Avec mes premiers tests le contenu entier du ficheir .js que j'utilisais était le suivant :
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
var xhr;
 
// création de l'objet XMLHttpRequest dans la variable globale xhr
newXHR();
 
function newXHR() {...}
function _evalueJavaScriptXHR() {...}
 
function envoyeGetXHR(url)
{
	if (xhr) {
		xhr.onreadystatechange = _evalueJavaScriptXHR;
 
		xhr.open('GET', url, true);
		xhr.send(null);
	}
}
ensuite sur ma page j'appelle plusieurs fois la fonction "envoyeGetXHR" mais avec Internet Explorer seul la première exécution fonctionne alors qu'avec Firefox il n'y a pas de problème

J'ai donc modifier pour recréer l'objet à chaque appel
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
var xhr;
 
function newXHR() {...}
function _evalueJavaScriptXHR() {...}
 
function envoyeGetXHR(url)
{
	// création de l'objet XMLHttpRequest dans la variable globale xhr
	newXHR();
 
	if (xhr) {
		xhr.onreadystatechange = _evalueJavaScriptXHR;
 
		xhr.open('GET', url, true);
		xhr.send(null);
	}
}
Est ce que ce code ne vas pas poser de problème de remplissage de la mémoire ? Est ce qu'il y a une autre solution pour que cela fonctionne sous Internet Explorer ?