Webmaster Hub: 2 Ajax pour un même événement... - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

2 Ajax pour un même événement... -->Petit problème

#1 L'utilisateur est hors-ligne   Bourinho 

  • Groupe : Membre
  • Messages : 329
  • Inscrit(e) : 04-mai 06
  • Localisation:A deux pas du Mont
  • Société:RienPourLinstant

Posté 10 octobre 2006 - 22:48

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!
0

#2 L'utilisateur est hors-ligne   PhpTech 

  • Groupe : Membre
  • Messages : 68
  • Inscrit(e) : 01-août 06
  • Localisation:Var, France.
  • Société:Php Technologies - OnPlace Market Inc.

Posté 10 octobre 2006 - 23:22

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]

Ce message a été modifié par PhpTech - 10 octobre 2006 - 23:28.

Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire !


$results = $shareKnowledge ? true : false;
Php Technologies, du pure concentré de Php5 !
0

#3 L'utilisateur est hors-ligne   Bourinho 

  • Groupe : Membre
  • Messages : 329
  • Inscrit(e) : 04-mai 06
  • Localisation:A deux pas du Mont
  • Société:RienPourLinstant

Posté 12 octobre 2006 - 13:06

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!
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)