Page 1 sur 2

Javascipt dans Ajax

Posté : 25 mai 2007, 15:14
par iut
Bonjour

Jai un petit probleme avec ajax:

Code : Tout sélectionner

//PAge mere //Fonction qui rafraichit la variante sélectionné function ajaxFunctDorm (nomBase){ //On initialise le XMLHttpRequest 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){ leselect = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('pp').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","paramAjaxDormant.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 nomVar = document.getElementById('nomVariante').value.toUpperCase(); xhr.send("nomVar="+nomVar+"&nomBase="+nomBase); xhr.send(""); }

//paramAjaxDormant.php appelé par la fonction Ajax,  qui doit normalement modifier la valeur d'un <input> situé dans la /page mère

<?php
<div id="pp">
        
        echo $_POST ["nomVar"]; <-- IL me laffiche Bien

        //JAVASCRIPT NE SE COMPILE PAS aucune action se fait.....
 
	echo " document.getElementById('etablissement').value='8' ";
        echo " alert('.$_POST ["nomVar"].')";

</div>
?>
Au lieu de me compiler le java script, il maffiche texto ma ligne de javascript contenu dans le echo
est ce normal?[/code]

Posté : 25 mai 2007, 16:14
par Cyrano
Et pour cause... As-tu eu la curiosité de regarder la source html générée dans ton navigateur ? :-k

Posté : 25 mai 2007, 18:37
par iut
tu pe mexpliquer le bogue parce que la je trouve pas et en plus je suis pas une lumière en informatique
Je tiens a precier que jai rajouter des balises <script> mais ca fait toujours le meme bogue

alors sil vous plait donner une solution si vous en avez une parce que jen ai grave besoin et je suis dans l'urgence

Posté : 25 mai 2007, 18:50
par mere-teresa
<?php
<div id="pp"> // pas bon ça
        
        echo $_POST ["nomVar"]; <-- IL me laffiche Bien

        //JAVASCRIPT NE SE COMPILE PAS aucune action se fait.....
 
    echo " document.getElementById('etablissement').value='8' ";
        echo " alert('.$_POST ["nomVar"].')";

</div> // pas bon ça
?> 

Posté : 25 mai 2007, 18:53
par iut
Jai rajouter des echos :
<?
echo '<div id="pp">'; 
        
        echo $_POST ["nomVar"]; <-- IL me laffiche Bien

        //JAVASCRIPT NE SE COMPILE PAS aucune action se fait.....
   echo "<script>";
    echo " document.getElementById('etablissement').value='8' ";
        echo " alert('.$_POST ["nomVar"].')";
       echo "</script>";
echo '</div>'; ?>
Meme avec ca ca fait le meme bogue aucun affcihage

Posté : 25 mai 2007, 20:24
par Sékiltoyai
1) Le javascript ne se compile pas, il s'exécute...
2) En javascript aussi, on met des point-virgule après chaque instruction. :-/

Posté : 25 mai 2007, 20:56
par Invité
<?
echo '<div id="pp">';

echo $_POST ["nomVar"]; <-- IL me laffiche Bien

echo "<script>";
echo " document.getElementById('etablissement').value='8'; ";
echo " alert('.$_POST ["nomVar"].');";
echo "</script>";
echo '</div>'; ?>

Voila jai fait les modifs pk ca marche toujours pas?

Vous pouvez pas me donnez un exemple simple pour me faire comprendre comment executer du cide javascript a lappel dune fonction ajax de ma configuration pagemere -> page fille (contient du java script)

Posté : 25 mai 2007, 22:03
par Cyrano
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.

Posté : 25 mai 2007, 22:23
par iut
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>

Posté : 25 mai 2007, 22:46
par Shrell
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

Posté : 25 mai 2007, 22:55
par iut
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?

Posté : 25 mai 2007, 23:05
par Shrell
c'est bien ca ;)

Posté : 26 mai 2007, 10:55
par iut

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?

Posté : 28 mai 2007, 00:30
par iut
Il est si difficile de repondre a ma question?

Posté : 28 mai 2007, 00:44
par Sékiltoyai
A mon avis, ca va répondre à ta question : http://gael-donat.developpez.com/web/intro-ajax/