|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 17 ![]() |
Bonjour,
J'ai un petit soucis avec la méthode que j'emploi, qui visiblement n'est pas bonne. Ce que je veux faire, c'est charger une page php dans DIV, via AJAX. En clair (enfin on va essayer) j'ai un menu, je clique sur un lien "introduction" qui va lancer une requete ajax chargée de prendre le fichier "introduction.php" et de l'afficher dans un DIV à côté du menu. Physiquement, on est donc resté sur la même page. L'affichage du php, j le fais en récupérant le source et le balançant dans un eval() au retour de la requete ajax. Ce principe fonctionne pour tout ce qui est html, mais le php qui passe dans l'eval n'est plus exécuté en tant que php, vu qu'on est revenu côté client, d'où mon problème... Comment faire pour charger un php dans ce div mais dont le code php sera exécuté ? Si qq'un a une idée... moi je deviens fou ![]() Merci ! Seb. |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Paul Gwen Inscription : mars 2007 Messages : 289 ![]() |
Bah en principe peu importe la facon dont tu appelles une page PHP, elle sera toujours exécuté coté serveur et renvoyé crée au client, car apres c'est facile de hack sinon.
est-ce que tu fais bien (pour faire simple) : document.getElementById("tadiv").innerHTML = (ta page php) ? |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 17 ![]() |
merci pour ta réponse Sacha,
En fait ce que je fais 1) je clique sur mon lien qui lance une requete ajax vers loadpage.php 2) ce loadpage.php est chargé de récupérer code source d'un fichier que je lui donne, via ceci function GetSource($url) { $file = @fopen ($url,"r"); if (!$file) { return null; } $doc = ""; while (!feof ($file)) $doc .= fgets ($file, 1024); fclose($file); return $doc; } il faut notamment un addslashes etc, il en fait un "echo 'document.getElementById("Main").innerHTML = LesSources" pour que le JS récupère les données 3) le JS fais un eval() de ce qu'il a reçu, le code source html donc, ca fonctionne très bien.. sauf si le fichier duquel on a récupéré le code source était un *.php. Il affiche l'html s'il y'en a, pas de prob, mais tout ce qui se trouve entre <?php> <?> n'est pas interprêté.. ce qui est logique vu qu'on est côté client. Donc j voulais savoir comment avoir le meme résultat mais avec du php qui est interprêté. |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Chef de projet NTIC Inscription : octobre 2004 Messages : 1 149 ![]() |
Salut,
pour précision , ta page php doit elle te renvoyer en retour d'execution (coté serveur) du code HTML (un tableau ou ect ......) pour être afficher dans une div ? ou alors ta page php ne renvoi rien et son resultat d'execution est une page HTML que tu souhaites inclure dans une div ? Dans l'hypothèse ou ta page php renvoi un flux HTML comment appelle tu cette page via une fonction ajax ? ou par un lien URL (lien de menu par exemple ?) |
|
|
00
|
|
|
#5 | |
|
Membre éprouvé
![]() |
Citation:
ce qui faut c'est, comme le dit beegood, que la page php te renvoi du HTML et faire des innerHTML mais c cracra ce qui faut c'est que tu envoi une requete asyncrone (XHr, par exemple), que le XHR retourne des infos (XML, JSON ...) que ton javascript créer des éléments HTML à partir des infos que te retourne le XHR
__________________
http://aldorande.miniville.fr/ind Fedora 8, eclipse 3.3 sur x86_64 -------------- Colorer votre code php |
|
|
00
|
|
|
#6 | |
![]() ![]() Inscription : janvier 2006 Messages : 1 107 ![]() |
Je suis pas expert en php, mais on dirait que ton problème vient du fait que ton script php ouvre et lit un fichier (php, html, peu importe). Mais forcément, le contenu lu n'est pas interprété par php, donc il te renvoie le contenu des tags php non interprété... A voir comment en php on peut demander explicitement l'interprétation d'une chaine (un include ne ferait pas la meme chose en fait?)
Citation:
|
|
|
|
00
|
|
|
#7 | |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 17 ![]() |
Citation:
Toutes mes requetes Ajax appelle on va dire "a.php" avec en parametre la page html ou php qu'il faudra affichier dans le div. Ce "a.php" va aller chercher sur le disque la page que j'ai donnée en paramètre et prendre son code source (via la fonction que j'avais donnée supra). C'est ce qu'il renvoit au js qui fais un eval dessus pour l'afficher dans le div. Maintenant si tu veux savoir ce que fait la page dont le a.php a pris le code source, ben ca peut être de tout... Je ne sais pas si ceci répond à tes questions, en tout cas merci ! Seb. |
|
|
|
00
|
|
|
#8 | |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 17 ![]() |
Citation:
un include interprete il me semble oui, mais comment devrais-je faire pour renvoyer ça au js via la fonction echo en php ? |
|
|
|
00
|
|
|
#9 | ||
![]() ![]() Inscription : janvier 2006 Messages : 1 107 ![]() |
includeme.php
ajaxhandler.php Code :
Et ce qui est envoyé en réponse a ta requete Ajax, c'est tout le contenu interprété de ajaxhandler, donc il va interpréter le echo et retourner "quelque chose". En fait, la réponse reçue par ta requête ajax, c'est ce que tu aurais affiché a l'écran si tu appelais ton fichier php dans ton navigateur. |
||
|
|
00
|
|
|
#10 | |||
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 17 ![]() |
Citation:
<?php> ... <?> <body> <p>hello</p> <table> <?php>... <?></> </body> est-ce que ce qui est html sera renvoyé aussi au js ? parce que le Js s'attend aussi à recevoir du php une chaine qui comence par "document.innerhtml machin" Anyway, je ne sais pas si je saurai encore répondre avant dimanche soir, un long we se prépare... merci pour tes réponses en tout cas ! |
|||
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : janvier 2006 Messages : 1 107 ![]() |
Le code html ne sera pas interprété (normal, c'est du html) mais il sera renvoyé aussi.
|
|
|
00
|
|
|
#12 |
|
Membre chevronné
![]() Chef de projet NTIC Inscription : octobre 2004 Messages : 1 149 ![]() |
Salut,
en faite tu veux inclure une page HTML ? c'est cela ? j'ai du mal à comprendre mais tu as une requete ajax qui appel du php et ce même php appelle une autre page php (ou html )? c'est bien cela ? |
|
|
00
|
|
|
#13 | |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 17 ![]() |
Citation:
coté JS avant de faire l'eval. En théorie ca devrait donc marcher. Ecoute, j'essaye ca dimanche soir, au pire lundi et je reviendrai dire quoi ! Merci, bon we. Seb. |
|
|
|
00
|
|
|
#14 | |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 17 ![]() |
Citation:
c'est juste que cette seconde page php est destinée à être affichée dans un div. J'essayerai la solution de DoubleU et vous direz quoi. Seb. |
|
|
|
00
|
|
|
#15 |
|
Membre chevronné
![]() Chef de projet NTIC Inscription : octobre 2004 Messages : 1 149 ![]() |
es tu obligé de passer par ce process ? ne peux tu pas appeller ta page php directement depuis ta page principale ? sans ajax et autre page php ?
|
|
|
00
|
|
|
#16 | |||
|
Membre chevronné
![]() Chef de projet NTIC Inscription : octobre 2004 Messages : 1 149 ![]() |
J'ai trouvé une astuce pour inclure des page dans une page html soit:
Citation:
Code :
|
|||
|
|
00
|
|
|
#17 | |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 17 ![]() |
Citation:
eval(document.getElementById('Main').innerHTML = xhr.responseText); dans le responseText il y a naturellement la page dont j'ai fait l'include en php, et je ne sais pas trop ce qu'il me veut Ce serait pas un problème de addslashes ? Qaund je fait un alert(xhr.responseText) il me montre le code html tel quel de la page.. est-ce que c'est correct ca ? MErci |
|
|
|
00
|
|
|
#18 | |||
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 17 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#19 | |
![]() ![]() Inscription : janvier 2006 Messages : 1 107 ![]() |
Le eval, c'est à utiliser seulement si ta réponse est un script javascript. Si tu retournes du html, faut pas l'utiliser.
Citation:
|
|
|
|
00
|
|
|
#20 | ||
|
Membre chevronné
![]() Chef de projet NTIC Inscription : octobre 2004 Messages : 1 149 ![]() |
Salut,
A première vue , si ton flux renvoyé est une chaine de code html normalement:, il te suffirai de faire: Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com