Bonjour,

Je patauge depuis quelque temps avec un problème dans mon script Ajax. J'ai fait un code tout simple permettant d'exécuter un script PHP de manière asynchrone avec Ajax. Ce script PHP devrait tout simplement m'envoyer un petit mot ! Mais la valeur de responseText est toujours vide, responseXML toujours à 'null' et readyState toujours à 0....... Quelqu'un a une idée ? Je pense que c'est tout bête ! Mais là, je ne vois pas..... En mode synchrone, c'est Ok....

Voici mes codes :

La (ou plutôt les 2) fonction(s) Javascript

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
function ajax(action)
{
	// Création de l'objet de requête HTTP
	var xhr;
	if (window.XMLHttpRequest) xhr = new XMLHttpRequest();
	else if (window.ActiveXObject) xhr = new ActiveXObject('Microsoft.XMLHTTP'); 
 
    // Appel de la page traitant le formulaire
    xhr.open('POST', "../web/"+action, true);
 
    // Définition de la fonction qui sera appelée à chaque changement d'état de l'objet xhr.readyState
    xhr.onreadystatechange = function() { alert_ajax(xhr); };
 
    // Affichage de l'image indiquant qu'il faut patienter
    document.getElementById("wait").className="waitActif";
 
    // Envoi des données
    xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    xhr.send('donnee=valeéàéèàéur');
}
 
// Cette fonction est appelée à chaque changement d'état
function alert_ajax(xhr)
{
	alert(xhr.readyState);
        alert(xhr.status)
    if (xhr.readyState == 4 && xhr.status==200) 
    {
    	alert(xhr.responseText);
    }
}

Le script PHP :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<?php
 
sleep(2);
echo 'test';
 
?>
alert(xhr.readyState) me renvoi seulement 4 avec Chrome et seulement 1 avec IE. alert(xhr.status) me renvoie 0....

Une p'tite idée ??

Merci beaucoup d'avance !