Bonjour,
Je suis en train de faire mon premier script AJAX. Et j’ai un problème au niveau de xhr.responseText.
Comment fonctionne t’il ?
Voilà une partie de mon code
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
// ---- pseudo déjà utilisé ----- //
if (xhr.responseText == 1) {
document.getElementById('img_pseudo').innerHTML="<ERREUR>";
var dispo_pseudo = false; }
// ---- pseudo libre ------------ //
else { document.getElementById('img_pseudo').innerHTML="<OK>";
var dispo_pseudo = true; }
}
Le fichier qui est inclus avec la focntion est inclu avec la méthode GET en envoyant comme paramètrela varaiable pseudo. Ce fichier renvoie 1 si il existe déjà sinon rien du tout.
Le problème c’est que le script ci dessus ne recoit jamais le 1 et renvoie toujours <OK> mêm si le pseudo existe.
je te conseille deja d’écrice plutot ceci :
if((xhr.readyState == 4) && (xhr.status == 200))
Ensuite comme j’ai pas top compris ton problème tu peux aller voir la :
http://openweb.eu.org/articles/objet_xmlhttprequest/
Explique un peu mieux ce que tu veux faire 
ca na rien changé, enfin je vais essayer de m’expliquer plus :
Il y a un formualire d’inscription
Le visiteur rempli le champ pseudo, dès qu’il quitte le champ pseudo,
une fonction est appelé est elle va vérifier si le pseudo qu’il a entré existe déjà.
Si il existe déjà, je met un message d’erreur sinon un message confirmant que son pseudo est ok.
Voici le code entier de la fonction appelé :
function verif_dispo() {
var pseudo = "document.inscription.pseudo.value";
if (pseudo != '') {
var xhr;
// ---- xhr navigateur ---------- //
if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); }
else if (window.ActiveXObject) { xhr = new ActiveXObject('Microsoft.XMLHTTP'); }
if (xhr) {
var page = "verif_dispo_pseudo.php5?pseudo=" + pseudo;
xhr.open('GET', page, true);
xhr.onreadystatechange = function() {
if ((xhr.readyState == 4) && (xhr.status == 200)) {
var reponse = xhr.responseText;
// ---- pseudo déjà utilisé ----- //
if (reponse == "1") {
document.getElementById('img_pseudo').innerHTML="<img src='../images/statut_attention.gif' title='Le pseudo existe dèjà' alt='incorrect' style='cursor:help'>";
var dispo_pseudo = false; }
// ---- pseudo libre ------------ //
if (reponse == "0") { document.getElementById('img_pseudo').innerHTML="<img src='../images/statut_ok.gif' title='connar' alt='ok'>";
var dispo_pseudo = true; }
}
}
xhr.send(null);
}
}
}
Tu peux tjs essayer avec POST :
if (xhr) {
xhr.open('POST', 'verif_dispo_pseudo.php5', true);
run_XMLHTTP.open('POST', 'index_ajax.php',true);
xhr.onreadystatechange = function() {
//la fonction a recopier
}
run_XMLHTTP.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
run_XMLHTTP.send("pseudo="+ pseudo);
if ((xhr.readyState == 4) && (xhr.status == 200)) {
var reponse = xhr.responseText;
//Pour debugguer
alert(reponse);
}
J’ai trouvé le problème :
il faut remplacer cette ligne : var pseudo = "document.inscription.pseudo.value";
par var pseudo = document.inscription.pseudo.value;
désolé et merci !