roro59650
Messages postés99Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention28 juillet 2011
-
4 mars 2008 à 14:07
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 2013
-
7 mars 2008 à 14:54
Bonjour tout le monde,
Tout d'abord, merci de me lire!
Bon ensuite, pour ce qui m'intéresse : j’ai une application intranet, donc je peut utiliser le javascript à loisir, il n’y à pas de problèmes ! Dans le menu cette application, je charge une page qui contient une liste extraite de ma base de données. Mais ce que je veut aussi, c’est qu’il y ai une fonction javascript qui cache certaines lignes (chose que je pourrais faire en php, mais je préfère le javascript). Ma fonction JS, je la déclarais au chargement de la page lorsque j’incluais ma page avec un include (donc page blanche en attente de l’affichage..). Mais maintenant, avec l’inclusion en AJAX, ma fonction JS ne s’exécute plus. Même lorsque je la met directement dans le code de la page html…
Savez vous pourquoi ? Auriez-vous une idée de comment faire ? Ou dois-je abandonner ma fonction JS pour faire en php ?
Merci beaucoup d'avance, j'espère avoir été clair, sinon, n'hésitez pas à me poser des questions
Merci encore!
un site qui s'ameliore de jour en jour
cs_ju_p
Messages postés22Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention11 septembre 2008 5 mars 2008 à 15:19
Je me suis penchée plus précisément sur la question et voilà la bonne fonction !
function load_page(select,Conteneur) {
var xhr2 = new_xhr();//On crée un nouvel objet XMLHttpRequest
if(select!=""){
xhr2.onreadystatechange = function(){
if ( xhr2.readyState == 4 ){//Actions executées une fois le chargement fini
if(xhr2.status != 200){//Message si il se preoduit une erreur
document.getElementById(Conteneur).innerHTML ="Error code " + xhr2.status;
} else {//On met le contenu du fichier externe dans la div
var c= document.getElementById(Conteneur);
c.innerHTML = xhr2.responseText;
var allscript = c.getElementsByTagName('script');
for(var i=0;i< allscript.length;i++){
eval(allscript[i].text);
}
} else {//Message affiché pendant le chargement
document.getElementById(Conteneur).innerHTML = "Chargement en cours ...
";
}
}
xhr2.open("GET", select, true);//Appel du fichier externe
xhr2.send(null);
}else{
document.getElementById(Conteneur).innerHTML = "";
}
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 4 mars 2008 à 14:32
Bonjour,
tu inclus la fonction js avec ajax ?
c'est normal alors, finalement, pour être simple, on peut dire que le php retourne du texte...
il y a des solutions pour faire... mais si on peut éviter,
tant qu'à faire inituile d'alourdir...
il doit y avoir un tuto, ou au moins des explications... sur CodesSources
ta fonction est dans la page html ? pas de raisons,
sauf qu'elle ne doit pas être déclenchée ou qu'il y a une erreur dans ce contexte.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 4 mars 2008 à 14:54
>>ce que je pige pas, c'est que si le php est bien exécuté, pourquoi pas le javascript ?!
le php renvoie du texte.
si c'est "php classique", ce texte sera interprété, donc le javascript exécuté
si c'est "ajax", la réponse de php est mise dans une variable javascript...
tu en fais ce que tu veux, et si tu veux y exécuter le javascript peut-être contenu...
à toi de faire.
pas si simple !!! même si des exemples existent !
<hr /> Cordialement Bul
roro59650
Messages postés99Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention28 juillet 20111 4 mars 2008 à 15:09
Enfin, pour être vraiment clair, ma fonction se trouve dans le code HTML de la page php qui est chargée par l'Ajax.
un site qui s'ameliore de jour en jour
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 4 mars 2008 à 15:24
>ma fonction se trouve dans le code HTML de la page php qui est chargée par l'Ajax.
donc aucune raison, sauf les " ;o)
avec FF ( par exemple )
Erreur : illegal character
Fichier source : file:///D:/Temp/new%201.htm
Ligne : 5, Colonne : 18 ( et ça pointe le « ) Code source :
alert(« Test du boudin ! »);
ou il se produit une erreur avant d'arriver là....
<hr /> Cordialement Bul
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 4 mars 2008 à 15:26
et fainalement
>>ma fonction se trouve dans le code HTML de la page php qui est chargée par l'Ajax
ce n'est pas si clair que cela...
soit c'est dans le html ça baigne
soit c'est chargé avec ajax non exécuté
roro59650
Messages postés99Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention28 juillet 20111 4 mars 2008 à 15:34
Pfiou, c'est l'aprem, et j'ai du mal^^.
En fait, les "« " sont dûs à Word, là ou j'ai tapé le message. Mais sinon, dans le code, c'est bien des doubles quotes comme ça : ".
J'ai une debug bar sur IE, c'est pas super, mais on voit quand il y a des erreurs.
J'ai essayé de charger une page HTML avec ajax. Voilà le code HTML :
<html>
<head>
<title>Test Ajax</title>
</head>
Et la fonction Ajax :
//Fonction AJAX qui ouvre une page dans la balise "CorpsPage" de la page principale
function ChargementPage(url)
{
var url = "Test/TestAjax.html";
var xhr_object = null;
if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
else
if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
// On ouvre la requete vers la page désirée
xhr_object.open("GET", url, true);
xhr_object.onreadystatechange = function(){
if ( xhr_object.readyState == 4 )
{
// j'affiche dans la DIV spécifiée le contenu retourné par le fichier
document.getElementById('CorpsPage').innerHTML = xhr_object.responseText;
}
}
// dans le cas du get
xhr_object.send(null);
alert("Chargement fait!");
}
Enfin, il reste bien des mystères!
un site qui s'ameliore de jour en jour
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 4 mars 2008 à 16:09
>>Et cette page marche très bien lancée directement sur IE!
très bien ( ça me rassure ! )
puis tu essayes de la charger avec ajax ?
et le javascript n'est pas exécuté ?
comme expliqué : c'est normal !
avec ajax, c'est renvoyé dans une variable, donc non interprété.
roro59650
Messages postés99Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention28 juillet 20111 4 mars 2008 à 16:25
Huuum, d'accord. Il me semble voir un peu le bout du tunnel là!
Ok. Donc l'Ajax charge la page php, html ou autre, "prends" le texte de résultat, et la met dans une variable. Puis, elle affiche le texte grâce à l'innerHTML.
J'espère avoir compris^^. C'est donc pour ça que la page php chargée avec Ajax ne reconnait pas les variables php de la page contenante!
Bon ok, merci pour ces éclairages!!
Et sinon, une autre question^^ :
J'ai une page qui a plusieurs liens Ajax dedans, du type : [javascript:ChargementPage('Test/TestAjax.html'); <td>Nom - Prénom</td>].
Avec la même fonction Ajax que j'ai donné plus haut, en ayant enlevé le "var url = ..." bien sûr. Mais bien évidemment, aucune ne marche...
Voilà, si t'a une idée...
Après, j'arrête, promis!
un site qui s'ameliore de jour en jour
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 4 mars 2008 à 16:47
>>
Donc l'Ajax charge
pas tout à fait.
javascript appelle un php avec ajax
qui répond dans une variable javascript
>>la page php chargée avec Ajax ne reconnait pas les variables php de
la page contenante!
pas tout à fait.
ça ne se déroule ni sur la même machine, ni en même temps
coté serveur :
le php "génère" un (disons) fichier et le renvoie
puis il se termine, n'existe plus.
il ne sait pas comment il a été appelé.
cote client ( html/javascript )
si c'est un appel "normal" ( formulaire ... ), la réponse
est affichée, donc interprétée
si c'est un appel ajax ==> variable javascript
mais php : y'en a plus. seule subsiste le fichier généré.
>>la même fonction Ajax que j'ai donné plus haut, aucune ne marche.
doit y avoir une erreur....
nombreux exemples partout en voici un, choisi au hasard ;o) : TAG regarde et si tu ne t'en sort pas : poser une nouvelle question ?
cs_ju_p
Messages postés22Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention11 septembre 2008 5 mars 2008 à 08:59
Bonjour,
Pour pouvoir exécuter du javascript dans une page chargée en ajax il te faut utiliser la fonction eval().
Dans ta fonction ajax qui charge la page, au lieu d'écrire :
document.getElementById(Conteneur).innerHTML = xhr2.responseText'; (par exemple)
il te faut mettre :
document.getElementById(Conteneur).innerHTML = eval('xhr2.responseText');