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

AJAX Discussion :

[AJAX] AJAX dans une popup


Sujet :

AJAX

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut [AJAX] AJAX dans une popup
    Bonjour,

    je vais essayer d'être clair, voici mon problème :

    j'ai une page php générée via de l'AJAX et qui contient des cellules cliquables.

    quand je clique sur une cellule, je déclenche une fonction javascript qui se trouve dans un fichier f_js.js
    Cette fonction appelle une page php qui va être en fait une popup via la ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'var f = window.open("", "FenetreRlt", "width=700, height=330, toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=700, top=300");';
    j'écris ce que j'ai à écrire dans cette fenêtre via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f.document.createElement(.......)

    Toujours dans cette fenêtre popup, j'ai une liste déroulante avec un onChange().
    Quand l'action onChange() est effectuée, j'envoi en paramètre "f" (celui du bout de code plus haut) afin de pouvoir travailler les infos de la popup dans une fonction js présente dans f_js.js.

    Si on s'arrête là tout va bien.

    Mon problème est le suivant :
    quand je fait le onChange(), je souhaite modifier dynamiquement certaines infos de la popup. MAIS j'ai besoin de le faire via des requêtes php.
    or quand j'appelle un fichier php dans le onChange(), je n'arrive pas du tout à modifier les infos de la popup car je n'arrive pas à "identifier" la popup.
    J'ai essayé d'envoyer "f", il ne le reconnait pas, j'ai essayé un simple document.getElmentById(...) pareil.

    Je ne sais pas comment dire à mon fichier php d'aller travailler sur les données de la popup.

    J'espère avoir été clair et vous remercie d'avance

    Pill

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    l'explication est relativement claire, mais pas le problème.
    Citation Envoyé par Pillgrim Voir le message
    quand je fait le onChange(), je souhaite modifier dynamiquement certaines infos de la popup.
    Bon. Mais tu es déjà dans la pop, on est d'accord ?
    Citation Envoyé par Pillgrim Voir le message
    MAIS j'ai besoin de le faire via des requêtes php.
    or quand j'appelle un fichier php dans le onChange(), je n'arrive pas du tout à modifier les infos de la popup car je n'arrive pas à "identifier" la popup.
    J'ai essayé d'envoyer "f", il ne le reconnait pas, j'ai essayé un simple document.getElmentById(...) pareil.
    Etant déjà dans la pop ,ça devrait être un simple traitement Ajax, non ?
    Citation Envoyé par Pillgrim Voir le message
    Je ne sais pas comment dire à mon fichier php d'aller travailler sur les données de la popup.
    C'est là que je ne comprends pas ton problème ??

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut
    Bon. Mais tu es déjà dans la pop, on est d'accord ?
    Oui
    Etant déjà dans la pop ,ça devrait être un simple traitement Ajax, non ?
    Je pensais, mais non :
    La popup contient le onChange() et tout est écrit grâce à Le fichier js contenant la fonction d'appel onChange() peut faire certains traitements mais pas ceux en php. Comme j'ai mis en paramètre le "f", j'arrive à faire du dans cette fonction.

    Dans cette même fonction js, j'appelle une page php. Pour modifier les données de la popup, je dois avoir un truc comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("param").value = valeur_res_requete
    Mon problème, c'est de cibler la popup. si je mets juste document...., il ne la trouve pas, et si je mets f.document, il ne comprend pas "f". (même après passage en paramètre de la fonction js, et récupération par un GET dans la page php) .

    Si tu ne vois pas mon problème, comment ferais tu pour manipuler les données de la popup dans la page php ?

    Merci !

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Pillgrim Voir le message
    Si tu ne vois pas mon problème, comment ferais tu pour manipuler les données de la popup dans la page php ?
    Déjà je partirais du principe qu'un code PHP ne peut pas (directement) "manipuler" une pop

    Je pense qu'à la création de la pop, je génèrerais la fonction d'appel Ajax (qui servira à manipuler la pop en JS, grâce au résultat d'un traitement PHP) ou une balise <script> pointant vers un .js (avec f.document.createElement) dans le <head>.
    Je n'aurais plus qu'à générer un onchange qui fasse appel à ma fonction Ajax prédéfinie ...

    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut
    Je vois ce que tu veux dire mais,
    on est bien d'accord que je suis obliger de faire un fichier php à part qui va faire mes requêtes ?
    Ensuite c'est bien toujours dans ce fichier que je vais mettre à jour mes valeurs ?
    Je ne peux pas faire ces changements autrement.
    Si ?

    Merci

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Ben ... fichier, requête, valeur ...

    Ça peut vouloir dire tout et son contraire suivant le contexte !
    Va falloir être plus précis et/ou plus concret

    A+

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut
    Ok
    voilà du concret :

    dans le fichier principal Page_Principale.php j'ai un tableau avec des cellulles TD sur lesquelles j'ai un onClick ()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'inp.onclick = function(){select_plan_image("", "'.$duree_00.'", "'.$nbpxlmin.'", "'.$large_maxi.'", "", "J", "'.$matricule.'", "'.$date_debut.'", "");};';
    Dans un fichier f_js.js j'ai la fonction select_plan_image(....) qui va faire appel à un fichier php qui sera la popup. Voici une partie du code de select_plan_image(....)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    data='matricule='+matricule+'&imageid='+imageid+'&type_code='+type_code+'&code='+code+'&duree_00='+duree_00+'&nbpxlmin='+nbpxlmin+'&large_maxi='+large_maxi+'&coddpt='+coddpt+'&nocache='+Math.random();
    	nom_page = "Page_Popup.php";
    	lance_page(data, nom_page) // permet l'exécution de la page
    dans Page_Popup.php j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	echo 'var f = window.open("", "FenetreRlt", "width=700, height=330, toolbar=0, menubar=0, scrollbars=1, resizable=1,status=0, location=0, left=700, top=300");'; // permet d'ouvrir la popup
    et une liste déroulante qui va contenir un onChange(). Quand le onChange s'exécute, je souhaite mettre à jour des champs input texte et une autre liste déroulante à jour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo 'sel.onchange = function(){select_codePointage(f, \''.$matricule.'\', d_travaux, \''.$coddpt.'\');};';
    le f passé en paramètre est celui du window.opener
    à partir de ce moment, pour moi, pour pouvoir modifier mes input via des requetes, je doit appeler une page php dans select_codePointage().

    j'ai donc fait dans f_js.js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select_codePointage(....) {
    // si ici je tente des modif de champs de la popup ça fonctionne via f.document.getElementById("id_champ").value = New_value;
    // Mais j'ai besoin de requetes
    	data = 'f='+f+'&tri='+tri+'&nocache='+Math.random();
    	fichtrt = 'Traitement_Popup_Php.php';
    	lance_page(data, fichtrt);
    }
    Pour finir, quand je fais des requêtes dans Traitement_Popup_Php.php, ça fonctionne, mais quand je veux agir sur la popup, il ne comprend pas les commandes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $f = $_GET["f"]; // renvoit [object]
    echo 'var titi = f.document.getElementById("date_jour").value;'; // ne marche pas
    echo 'var titi = '.$f.'.document.getElementById("date_jour").value;'; // ne marche pas
    echo 'var titi = document.getElementById("date_jour").value;'; // ne marche pas

    Merci !

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    OK.
    C'est effectivement plus concret

    Par contre, d'une part c'est du PHP, d'autre part, tu ne dis pas toujours s'il s'agit de la page principale ou de la pop (même si on peut parfois le déduire).

    Il faudrait reposté la version générée (et non PHP) de toutes les parties Javascript et HTML.
    C'est le seul moyen de détecter efficacement les erreurs (beaucoup étant liées à la génération).

    A+

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut
    C'est toujours la popup, sauf pour le premier bout de code.

    Tous les appels se font via la popup, mis à part le premier onClick qui vient de la page principal

    J'ai bien 4 fichiers :
    Page_Principale.php pour le onClick()
    f_js.js pour lancer les pages Page_popup.php et Traitement_Popup_Php.php
    Page_popup.php qui fait le window opener
    Traitement_Popup_Php.php qui fait les requêtes et est censé modifier les input créés dans Page_popup.php


    Je la trouve où la version générée ????


    Merci

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Pillgrim Voir le message
    Je la trouve où la version générée ????
    Dans ton navigateur
    Une fois Page_Principale.php affichée dans le nav => clic droit + "Afficher la source" (ou équivalent) ...

    A+

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut
    C'est bien ce que je pensais mais on va pas voir grand chose.
    Le code généré de ma popup est <HTML></HTML>
    Mais c'est normal tout passe par javascript/PHP


    PS : merci beaucoup pour le temps passé !

  12. #12
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Pillgrim Voir le message
    C'est bien ce que je pensais mais on va pas voir grand chose.
    Le code généré de ma popup est <HTML></HTML>
    Page_Principale.php c'est ta pop ?

    A+

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut
    Non.
    Voici le code génré de Page_Principale, mais encore une fois on ne va pas voir grand chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <html>
    <head>
    <link href="styles_VP.css" rel="stylesheet" type="text/css">
    <SCRIPT TYPE="text/javascript" src="./includes/function_js.js"></SCRIPT>
    <SCRIPT TYPE="text/javascript" src="./includes/function_ajax.js"></SCRIPT>
    <SCRIPT TYPE="text/javascript" src="./includes/function_js_roul.js"></SCRIPT>
    <SCRIPT TYPE="text/javascript" src="./includes/function_js_t.js"></SCRIPT>
     
    <div id="contenu_plan" style="display:block"><div id="chargementVP" style="display:block;text-align:center;"><p>Chargement en cours . . . <img src="./Images/chargeplan.gif""></p></div><div id="id_plan_main" style="display:none;"></div><div style="display:none"><input id="hdispo" namoe="hdispo" value="" type="hidden"></div></div>
    <script type="text/javascript">
    o_blk_plan("id_plan_main", "Y", "10", "077", '');
    </script>
     
    </body>
    </html>
    Merci !

  14. #14
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Pillgrim Voir le message
    on ne va pas voir grand chose.
    Arf !
    J'avais zappé ça :
    Citation Envoyé par Pillgrim Voir le message
    j'ai une page php générée via de l'AJAX et qui contient des cellules cliquables.


    Et ben c'est pas gagné

    C'est le gros inconvénient des sites "full Ajax" (car visiblement tu n'as pas besoin d'Ajax dans ta page principale).

    Pour reprendre plus haut : à partir d'où est appelée Traitement_Popup_Php.php ?
    De la principale ou de la pop ?

    A+

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Et ben c'est pas gagné
    Comme tu dis
    Citation Envoyé par E.Bzz Voir le message
    C'est le gros inconvénient des sites "full Ajax" (car visiblement tu n'as pas besoin d'Ajax dans ta page principale).
    Si j'en ai besoin car j'ai simplifié en l'appellant page principale. Mais c'est plus compliqué que ça, mais non nécessaire à la résolution du problème je pense ^^
    Citation Envoyé par E.Bzz Voir le message
    Pour reprendre plus haut : à partir d'où est appelée Traitement_Popup_Php.php ?
    De la principale ou de la pop ?
    C'est appelé depuis la popup, lors du onChange() qui est fait sur une liste déroulante de la popup
    Traitement_Popup_Php.php

    Merci !

  16. #16
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Alors si Traitement_Popup_Php.php est bien appelé par Ajax (et si date_jour est bien l'id d'un élément de la pop), la syntaxe devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var titi = document.getElementById("date_jour").value;
    alert(titi); // pour vérifier
    Si ça ne fonctionne pas, c'est qu'il nous manque une information (ou qu'un autre bug gêne)

    A+

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut
    Cette syntaxe ne fonctionne pas, ni dans la fonction javascript d'appel qui est codePointage(), ni dans Traitement_Popup_php.php

    Pour que ça fonctionne dans codePointage(), il faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var titi = f.document.getElementById("date_jour").value;
    alert(titi); // pour vérifier
    Dans Traitement_Popup_php.php, il ne reconnais pas "f"

    Si je ne le mets pas, j'ai droit à l'erreur "Object requis"

    Merci

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 327
    Par défaut
    juste une idée en survolant ton probleme
    dans ton popup tu fais une requete ajax en js donc et pour modifier les données issus d'un script php tu fais en sorte
    que quand tu clic tu exécute une fonction JS qui elle va transmettre des paramatres à la metode ajax send("param="maVar etc etc) et là sur ton script php tu recupere les param avec $maVar=$_GET["maVar"];
    et la ces nouveaux parametres sont transmis à ta requete SQL
    genre select from table where monChamps=$maVar
    et là aussi via ajax tu recupere le resultat de la requete via jason xml ce que tu veux. et voilà c'est modifié.
    Sinon un popup est ce judicieux vu que les navigateurs peuvent les bloquer
    modifier un div avec le dom et son contenu n'est ce pas plus accessible et plus simple?

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 18
    Par défaut
    Merci de ta contribution.
    et là aussi via ajax tu recupere le resultat de la requete via jason xml ce que tu veux. et voilà c'est modifié.
    Je n'ai pas compris cette phrase. C'est quoi jason xml ???

    Transmettre les paramètres et les récupérer, puis les utiliser pour une requête, ya pas de souci.
    Modifier un champ de la popup, ya souci.

    L'utilisation de la popup est ici indispensable

  20. #20
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    @laurent : comme je te l'ai déjà dit, Jason est une référence cinématographique (entre autres).
    Ici il faut parler de JSon

    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/03/2010, 21h12
  2. [AJAX] AJAX - ID dans une boucle
    Par berino dans le forum AJAX
    Réponses: 6
    Dernier message: 07/02/2010, 19h13
  3. Réponses: 6
    Dernier message: 18/01/2008, 17h12
  4. [AJAX] Positionnement dans une liste déroulante
    Par Paul75 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/04/2007, 11h25
  5. [AJAX] Chargement d'une popup
    Par ruda.tom dans le forum JSF
    Réponses: 15
    Dernier message: 18/02/2007, 13h22

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