Javascipt dans Ajax

iut
Eléphant du PHP | 61 Messages

25 mai 2007, 15:14

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]

Mammouth du PHP | 19672 Messages

25 mai 2007, 16:14

Et pour cause... As-tu eu la curiosité de regarder la source html générée dans ton navigateur ? :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

iut
Eléphant du PHP | 61 Messages

25 mai 2007, 18:37

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

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

25 mai 2007, 18:50

<?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
?> 
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

iut
Eléphant du PHP | 61 Messages

25 mai 2007, 18:53

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
Et 1 et 2 et 3 Kebabs .(o_O).

ViPHP
ViPHP | 5924 Messages

25 mai 2007, 20:24

1) Le javascript ne se compile pas, il s'exécute...
2) En javascript aussi, on met des point-virgule après chaque instruction. :-/

Invité
Invité n'ayant pas de compte PHPfrance

25 mai 2007, 20:56

<?
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)

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

iut
Eléphant du PHP | 61 Messages

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>
Et 1 et 2 et 3 Kebabs .(o_O).

Eléphant du PHP | 377 Messages

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
Petit scarabée deviendra grand

iut
Eléphant du PHP | 61 Messages

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?
Et 1 et 2 et 3 Kebabs .(o_O).

Eléphant du PHP | 377 Messages

25 mai 2007, 23:05

c'est bien ca ;)
Petit scarabée deviendra grand

iut
Eléphant du PHP | 61 Messages

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?
Et 1 et 2 et 3 Kebabs .(o_O).

iut
Eléphant du PHP | 61 Messages

28 mai 2007, 00:30

Il est si difficile de repondre a ma question?
Et 1 et 2 et 3 Kebabs .(o_O).

ViPHP
ViPHP | 5924 Messages

28 mai 2007, 00:44

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