IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Charger une page php dans un div


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 17
    Par défaut [AJAX] Charger une page php dans un div
    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.

  2. #2
    Membre très actif Avatar de Sacha999
    Inscrit en
    Mars 2007
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mars 2007
    Messages : 294
    Par défaut
    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) ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 17
    Par défaut
    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é.

  4. #4
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Par défaut
    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 ?)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 17
    Par défaut
    Citation Envoyé par beegood Voir le message
    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 ?)
    Euh, J'avoue je ne suis pas trop ce que tu veux dire.
    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.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut
    Citation Envoyé par drannh Voir le message
    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é.
    pouah pas les innerHTML


    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

  7. #7
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    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?)


    ce qui faut c'est que tu envoies 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
    Ca serait vraiment se galérer pour pas grand chose...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 17
    Par défaut
    Citation Envoyé par DoubleU Voir le message
    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?)




    Ca serait vraiment se galérer pour pas grand chose...
    Tu as bien compris mon problème.. et meme que tu l'as deja mieux expliqué lol
    un include interprete il me semble oui, mais comment devrais-je faire pour renvoyer ça au js via la fonction echo en php ?

  9. #9
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    includeme.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
       echo "quelque chose";
    ?>
    ajaxhandler.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
       $page = $_GET["tonParametreDeTaRequete"]; //mettons que ca vaut "includeme.php"
       include($page)
    ?>
    Quand tu fais le include, il interprete le contenu du fichier et il le rajoute a ajaxhandler, donc c'est comme si tu avais fait écrit "echo 'quelquechose' "dans ajaxhandler.

    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.

Discussions similaires

  1. Charger une page web dans un div
    Par pekre dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 19/07/2015, 22h22
  2. charger une page html dans un div
    Par mantalo dans le forum jQuery
    Réponses: 2
    Dernier message: 16/06/2010, 12h41
  3. Insérer une page JSP dans un DIV avec AJAX
    Par sethi dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 31/03/2010, 21h04
  4. (AJAX) charger une page aspx dans un div
    Par divinThomas dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/04/2008, 13h12
  5. [AJAX] Charger une page dans un div
    Par pcdj dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/07/2007, 20h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo