[AJAX PHP JS HTML] xhr.responseText - [résolu par moi] Comment ça marche ?

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 :slight_smile:

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 !

En effet :paf:

:jap: