Javascipt dans Ajax

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Javascipt dans Ajax

par Sékiltoyai » 28 mai 2007, 15:13

De rien.

par iut » 28 mai 2007, 15:00

J'avais pas penser a utiliser le XML...

Mais en fait c hyper pratique!!! Ca a resolu mon probleme!!

Merci beaucoup

par Sékiltoyai » 28 mai 2007, 14:54

A moins que tu penses que je dois utiliser du XML?
Oui.
Dans AJAX, le X, c'est pour XML...

par iut » 28 mai 2007, 14:22

J'avais pas penser a utiliser le XML...

Mais en fait c hyper pratique!!! Ca a resolu mon probleme!!

Merci beaucoup

par Sékiltoyai » 28 mai 2007, 14:16

A mon avis, ca va répondre à ta question : http://gael-donat.developpez.com/web/intro-ajax/

par iut » 28 mai 2007, 13:19

Je vais essayer d'etre le plus clair possible:

Jai une page PHP (page principale) qui contient un formulaire vide et une liste deroulante contenant une liste deroulante contenant les noms des préférences que l'utilisateur a mis en base.

Lorque que je sélectionne un nom de preference se trouvant dans la liste dérouante, une fonction onchange se charge dappeler ma fonction Ajax.

Et je voudrais que cette fonction Ajax me mette 'en value' dans les <input> se trouvant dans la page principale les valeurs que lutilisateur a mis en base pour la preference qui l'a sélectionner grace a des document.getElementById.value= kkchose .

Moi javais l'idée que ma fonction Ajax fasse la chose suivante:

fonctionAjax (se trouvant dans la page principale) est appelé quand lutisateur selectionne un element de la liste. Ensuite cette fonction fait appel à une autre page PHP qui soccupe seulement de faire la requete necessaire pour recupere les informations en base que lon souhaite voir afficher dans le formulaire.

Mais le problème c'est que je ne sais pas comment faire pour pour mettre de mettre les value pour chaque input de mon formulaire. Je sais pas si je dois redessiner tout le formulaire dans ma deuxieme page php qui s'occupe de faire la requête.

Ou bien de recuperer les données résultant de la requête et les envoyé a ma page principal afin de pouvoir les utiliser par la suite (en faisant des document.getElementById(idAttr1).value=donne provenant de la deuxieme page, dans ma page principal)....

Le seul problème c que je ne sais pas comment faire.

Avec l'espoir d'être le plus clair possible.

par mere-teresa » 28 mai 2007, 10:13

Quel code veux tu obtenir ? (HTML, puis Javascript)

Avant de créer tout en PHP, il faut écrire le code statique et le tester :)

par Sékiltoyai » 28 mai 2007, 00:44

A mon avis, ca va répondre à ta question : http://gael-donat.developpez.com/web/intro-ajax/

par iut » 28 mai 2007, 00:30

Il est si difficile de repondre a ma question?

par iut » 26 mai 2007, 10:55

Code : Tout sélectionner

if(xhr.readyState == 4 && xhr.status == 200){ retour = xhr.responseText; //Input de type texte se trouvant dans ma page document.getElementById('etablissement').value=retour; <- retour renvoit le bout de code executer par le serveur, il mest impossible de donner une valeur avec cette methode, a moins que dans lautre page php appeler par la fonction AJAX (pageAjax.php), je dois ecrire des choses speciales? } pageAjax.php quel doit etre son contenu?

par Shrell » 25 mai 2007, 23:05

c'est bien ca ;)

par iut » 25 mai 2007, 22:55

donc je dois faire un truc du genre

if(xhr.readyState == 4 && xhr.status == 200){
retour = xhr.responseText;
document.getElementById('etablissement').value=retour;
document.getElementById('la').innerHTML = retour;
}
Si jai bien compris?

par Shrell » 25 mai 2007, 22:46

Le javascript renvoyé par de l'ajax ne peut pas être interprété, le navigateur n'interprète que ce qu'il a dès le départ. Si tu veux faire des actions javascript selon ce que renvoit ton script AJAX, il faut que ces actions soient déjà présentes au moment du chargement de la page et que tu les déclenche selon ce que tu récupères.
Donc ce que tu fais ne peut pas marcher de cette façon, il vaut mieux demander à ton AJAX de renvoyer simplement la valeur à rajouter et la faire afficher par la fonction appelée sur le onReadyStateChange

par iut » 25 mai 2007, 22:23

Jai effectue ce que tu mas demandé sur un petit exemple et le code javascript ne s execute toujours pas:

//Page a.php
<html>
<head>
<title>a</title>
<script type='text/javascript'>

function getXhr(){
                                var xhr = null; 
				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 
				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
				   xhr = false; 
				} 
                                return xhr;
			}
			
			function test(){
				var xhr = 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){
						retour = xhr.responseText;
						// On se sert de innerHTML pour rajouter les options a la liste
						document.getElementById('la').innerHTML = retour;
					}
				}

				// Ici on va voir comment faire du post
				xhr.open("POST","b.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
				// ici, l'id de l'auteur
				selo= document.getElementById('test3');
				sel = document.getElementById('test');
				seli = document.getElementById('test2');
				sel2 = sel.options[sel.selectedIndex].value;
				sel3=seli.options[seli.selectedIndex].value;
				sel4=selo.options[selo.selectedIndex].value;
				xhr.send("pet="+sel2+"&pet2="+sel3+"&pet3="+sel4);
			}
</script>
</head>


<body>
<select id='test3' onchange='test()'><option value="Bonjour">Bonjour</option><option value="Bonsoir">Bonsoir</option></select>
<select id='test' onchange='test()'><option value="tata">tata</option><option value="toto">toto</option></select>
<select id='test2' onchange='test()'><option value="djamila">djamila</option><option value="zora">zora</option></select>
<div id='la'>
<p id='p'>
</p>
</div>
</body>
</html>
//b.php
<p id='p'>
<?
echo ' '.$_POST["pet"].' '.$_POST["pet2"];
 ?>
<script type="text/javascript">
alert('<?php echo($_POST ["pet"]) ?>');   <- ne saffiche pas
</script>
<?php
?> 
</p>

par Cyrano » 25 mai 2007, 22:03

Bon, voilà ton code remis droit :
<div id="pp"> 
<?php 
echo $_POST ["nomVar"];
?>
<script type="text/javascript">
/* <![CDATA[ */
document.getElementById('etablissement').value = 8;
alert('<?php echo($_POST ["nomVar"]) ?>'); 
/* ]]> */
</script>
<?php
?>
</div> 
Tu utilises trois langages différents : HTML, PHP et JavaScript. Le premier et le dernier sont interprétés directement par le navigateur, le second par le serveur, donc quand la page arrive au navigateur, le PHP est déjà interprété et ce sont des valeurs qui arrivent, pas du code.