Bonjour

J'ai commencé a écrire un script de chat en AJAX, mais j'ai quelques problèmes avec le rafraichissement automatique sous IE.

Il marche pourtant correctement sous Firefox.


La fonction chatTimer() va se rappeller après un certain Timeout (quand j'y pense, c'est pas un peu dégeu une fonction récursive infinie ? ) en affichant le contenu de readmsg.php (qui va lire les messages dans la bdd).

Voici mon code:

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
var check = false;
 
function getXhr()
{
	var xhr = null;
	if(window.XMLHttpRequest)
		xhr = new XMLHttpRequest();
	else if(window.ActiveXObject)
	{
		try {
		xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else
	{
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		xhr = false;
	}
	return xhr;
}
 
var xhrRefresh = getXhr();
var xhrPost = getXhr();
 
function chatTimer()
{
	refresh_chat();
	setTimeout("chatTimer();",2000);
}
 
function send_message()
{
	xhrPost.onreadystatechange = function(){
		// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
		if(xhrPost.readyState == 4 && xhrPost.status == 200){
			refresh_chat();
		}
	}
	xhrPost.open("POST","postmsg.php",true);
	xhrPost.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	nick = document.getElementsByName('nick').item(0).value;
	mess = document.getElementsByName('mess').item(0).value;
	xhrPost.send("nick="+nick+"&mess="+mess);
}
 
function refresh_chat()
{
	xhrRefresh.onreadystatechange = function(){
		if(xhrRefresh.readyState == 4 && xhrRefresh.status == 200){
			document.getElementById('chat_content').innerHTML = xhrRefresh.responseText;
		}
	}
	xhrRefresh.open("GET","readmsg.php",true);
	xhrRefresh.send(null);
}
 
if(!check)
{
	check = true;
	chatTimer();
}
Merci pour vos idées.