Aller au contenu

Sujets conseillés

Posté

Bonjour à tous,

Ce qui m'amène est le problème suivant... J'utilise la technologie Ajax (enfin, j'essaie :whistling: )dans deux fonctions javascript appelées lors d'un même événement...


var xhr = null;

function getXhr()
{
if(window.XMLHttpRequest)
{// Firefox et autres
xhr = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{ // Internet Explorer
try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{ // XMLHttpRequest non supporté par le navigateur
xhr = false;
}
}

function ListeVille()
{
getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function()
{
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200)
{
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('PropositionVille').innerHTML = xhr.responseText;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","ajax/ListeVille.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
sel = document.getElementById('Departement');
Departement = escape(sel.options[sel.selectedIndex].value);
VilleOUCodePostal=escape(document.getElementById('VilleOUCodePostal').value);
xhr.send("Departement="+Departement+"&VilleOUCodePostal="+VilleOUCodePostal);
}

function PseudoValide()
{
Pseudo=document.getElementById('pseudo').value;
getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function()
{
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200)
{
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('ImagePseudoValide').innerHTML = xhr.responseText;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","ajax/PseudoValide.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
xhr.send("Pseudo="+escape(Pseudo));

}
function PageJavaScript()
{
PseudoValide();
ListeVille();
}

Plus loin, dans le code en html, on trouve :

 <body onLoad='PageJavaScript()'>

Et je m'aperçois que seul ListeVille est bien exécutée... Y aurait-il une astuce pour que cela fonctionne sans devoir réécrire une nouvelle fonction javascript avec une nouvelle page en php?

Par avance, merci!

Posté (modifié)

Bonsoir,

le plus simple, je pense, serais que tu utilise une fonction "commune", à laquelle tu passerais les arguments nécessaires.

Une en JS (que tu inclue ensuite dans tes pages HTML), et pourquoi pas, (soyons fou!) une seconde que tu mettrais dans une

classe PHP (récuperation -> analyse -> soumission de la réponse).

Ca n'est pas trés compliqué, tu as le modele sous les yeux ;)

Bonne continuation,

David.

[Edit]

En répondant à un autre post, il m'est venue une autre idée, pourquoi ne pas utilisé une librairie toute prête ?

Genre Moo.ajax ;)

[/Edit]

Modifié par PhpTech
Posté

Salut,

Merci pour ton aide mais ta proposition ne respecte pas le cahier des charges ;) (ce qui m'embête, c'est que j'aimerais réutiliser certains des fichiers php sur une autre page...alors j'ai pas trop envie de les mixer!!!)

En fait, j'aimerais une ligne qui permettrait de faire : Attendre que NewXhrOk change de valeur... Comme suit:(les nouvelles lignes sont suivies de //###

function PseudoValide()
{
Pseudo=document.getElementById('pseudo').value;
getXhr();
NewXhrOk=false;//###
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function()
{
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200)
{
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('ImagePseudoValide').innerHTML = xhr.responseText;
NewXhrOk=true;//###
}
}
// Ici on va voir comment faire du post
xhr.open("POST","ajax/PseudoValide.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
xhr.send("Pseudo="+escape(Pseudo));
Attendre que NewXhrOk change de valeur;//###
}

J'ai essayé avec un do while mais ça ne fonctionne pas...ça mouline et FireFox donne un message d'erreur...

Par avance, merci!

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...