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 ?

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