par
Ryle » 23 nov. 2007, 13:24
J'ai peut être trouvé d'où venait ton problème : tu fais appel à ta fonction de maj lorsque l'attribut readyState est modifié, mais tu ne vérifies pas quel est son statut.
Pour rappel, lorsque tu effectues un appel au serveur avec ajax, ton objet xhr passe par ces différents états :
Code : Tout sélectionner
0 : non initialisé
1 : connexion établie
2 : requête reçue
3 : réponse en cours
4 : terminé
Ton traitement ne doit s'effectuer qu'une fois l'échange avec le serveur terminé, il te manque donc un test (à mettre soit dans ta fonction de maj soit dans la déclaration du readystatechange :
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) { // la réponse a bien été renvoyée
if (xhr.status == 200) {// on vérifie qu'il n'y a pas eu d'erreur
maj_ajax(xhr); // on met à jour
}
else // si la page n'est pas trouvée (404), les droits sont insuffisants (501), ...
alert ("Erreur : " + xhr.status);
}
}
L'autre soucis étant ton accès aux données du formulaire avec le getElementById(), qui ne prend en argument que la chaine contenant le nom de l'id de l'objet (sans quoi il cherche un objet nommé "input" qui a un attribut "nom" et il ne trouve pas

)
document.getElementById('nom') = docXML.getElementsByTagName("nom");
...
J'ai peut être trouvé d'où venait ton problème : tu fais appel à ta fonction de maj lorsque l'attribut readyState est modifié, mais tu ne vérifies pas quel est son statut.
Pour rappel, lorsque tu effectues un appel au serveur avec ajax, ton objet xhr passe par ces différents états :
[code]0 : non initialisé
1 : connexion établie
2 : requête reçue
3 : réponse en cours
4 : terminé[/code]
Ton traitement ne doit s'effectuer qu'une fois l'échange avec le serveur terminé, il te manque donc un test (à mettre soit dans ta fonction de maj soit dans la déclaration du readystatechange :
[php]xhr.onreadystatechange = function() {
if (xhr.readyState == 4) { // la réponse a bien été renvoyée
if (xhr.status == 200) {// on vérifie qu'il n'y a pas eu d'erreur
maj_ajax(xhr); // on met à jour
}
else // si la page n'est pas trouvée (404), les droits sont insuffisants (501), ...
alert ("Erreur : " + xhr.status);
}
}[/php]
L'autre soucis étant ton accès aux données du formulaire avec le getElementById(), qui ne prend en argument que la chaine contenant le nom de l'id de l'objet (sans quoi il cherche un objet nommé "input" qui a un attribut "nom" et il ne trouve pas :))
[php]document.getElementById('nom') = docXML.getElementsByTagName("nom");
...[/php]