Jump to content
Sign in to follow this  
Bourinho

2 Ajax pour un même événement...

Recommended Posts

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!

Share this post


Link to post
Share on other sites

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]

Edited by PhpTech

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...