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 :

Page chargée deux fois a la place d'une (fermeture popup)


Sujet :

JavaScript

  1. #1
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut Page chargée deux fois a la place d'une (fermeture popup)
    Bonjour tout le monde ^^
    J'ai un souci avec un ppoup et le rechargement de sa page mere.
    voici un formulaire sur le popup avec un bouton de type submit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <input align="right" type="submit" value="Valider" onclick="closeWindow()">
    le onclick appelle closeWindow() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function closeWindow(){
    groupName=self.opener.document.getElementById('groupName').value; 
    self.opener.location.href = ("${pageContext.request.contextPath}/detailGroup.do?groupName="+groupName);
    setTimeout("self.close()", 100);
    }
    je recupere bien ma variable groupName de la fenetre mere. Le formulaire est envoyé ca c ok. Par contre, Ma page mere est rechargé avec le groupName, mais immediatemebnt apres elle est rechargé sans la variable groupName. Je voudrai eviter le deuxieme chargment de ma page mere et je ne comprend pas d ou il peut venir.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    1) tu as quoi dans l'action du form ?

    2) as tu quelquechose dans le onload de la mère ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    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,
    le 1° rechargement est dû au onclick (modif de l'url dans la fonction), puis le 2° au submit du form.

    Visiblement, il vaudrait mieux que la fonction se contente de modifier l'action du form (en ajoutant groupName dans les paramètres)
    EDIT : , puis laisse se faire le submit ...
    Du coup, mieux vaudrait appeler la fonction sur le onsubmit

    A+

  4. #4
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    1) tu as quoi dans l'action du form ?

    2) as tu quelquechose dans le onload de la mère ?
    Salut spaceFrog ^^
    Dans l'action du Form, il y avait une erreur que je viens de voir, qui etait surement la cause du deuxieme chargement intempestif ^^ Merci

    le popup est crée avec un window.open dans la jsp mere. (j ai oublié de spécifier que je travaillais avec struts et donc un formulaire struts.

    Donc la, c'est bon je n'ai qu'un chargement. Cependant, il y encore un probleme .. normalement en rappellant l action avec le bon groupName, il devrais bien recharger la page, pourtant la page mere ne change pas, ou elle change mais sans mettre a jour les données (le formulaire du popup permet a l utilisateur de rentrer de nouvelle données qui sont(devrai etre...) affiché sur la page mere. Pourtant l action qui charge cette page, est bien appellé et le forwarding est bon. Pourtant auccune modif...

    E.bzzz : Je ne veux pas spécifié le groupName dans mon formulaire car je n'en ai pas besoin au niveau de ma bdd. le groupName me sert seulement a me rediriger apres. Mais ce probleme est réglé ^^

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    pass ton groupname dasn un champs caché du form ...
    et passes le en param lors du location en php ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    Non, je ne veux pas le mettre dans le form. Mais ce n'est plus le probleme, je recupere mon groupName sans souci la. En fait le probleme que je rencontre ici (je crois), c'est que l'action qui liste les données ( donc l action de rechargement de ma page mere ) se fait avant la mise en base des données que j'envoie via le formulaire. Je vérfie ca tout de suite.

    EDITION : oui c ca. Y a t'il moyen de palier a ce probleme ? a savoir lui spécifié qu'il doit d abord s'occuper du formulaire puis faire le rechargement de la page mere?

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    si l'action du form recharge la page mère ...

    pourquoi ne pas tout gere en php au moins tu sera sur que la mise à jour de la base sera faite ...
    sinon il faudrait passer par ajax en mode synchrone ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    je suis en java / jsp et hibernate pour la base de données.

    Je suis d'accord que je pourrai passer le groupName au form qui le passerai a son action et rechargerai la page correctement, mais j'en ai vraiment pas envie, je trouve ca assez "sale", mais si je n'ai pas d autre solution je le ferai ^^

    Quand a l'ajax en mode synchrone, pourquoi pas.. Mais je suis pas au niveau en javascript pour ca

    Et si c'est l action du form qui recharge la page mere, comment tu recharge la page mere a partir d'une action lié au form sur le popup ? Il va me rechargé la page mere mais sur la fentre du popup...

    EDITION : oui je viens de tester, si je fais ca l'action me recharge la page mais dans le popup...

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Ben tout le problème est que tu as un premier rechargement avec l'action et un second avec le location.href ...

    tu peux laisser le rechargement avec l'action et modifier le groupname avec un setTimeout mais c'est risqué car tu ne peux pas savoir le temps de traitement et reachargeemnt de la page avant de lancer la fonction dasn le setTimeout...

    Donc ce que tu trouves sale à priori est a mon avis la methode la plus propre ...
    passer ta variable au serveur sasn qu'elle ne serve au traitement et la renvoyer sur la page lors du rechargement...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  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 SpaceFrog Voir le message
    Donc ce que tu trouves sale à priori est a mon avis la methode la plus propre ...
    +1

    Il me semble également préférable de lier la màj de la base et la restitution du résultat, plutôt que de les dissocier, avec les risque de déphasage que ça comporte.
    .... surtout si plusieurs utilisateurs sont susceptibles de modifier les même données.

    A+

  11. #11
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Ben tout le problème est que tu as un premier rechargement avec l'action et un second avec le location.href ...

    tu peux laisser le rechargement avec l'action et modifier le groupname avec un setTimeout mais c'est risqué car tu ne peux pas savoir le temps de traitement et reachargeemnt de la page avant de lancer la fonction dasn le setTimeout...

    Donc ce que tu trouves sale à priori est a mon avis la methode la plus propre ...
    passer ta variable au serveur sasn qu'elle ne serve au traitement et la renvoyer sur la page lors du rechargement...
    Ok, je vais m y résoudre mais comment tu fais dans l'action pour lui spécifier de recharger la page mere et pas la page mere DANS le popup ou il y a le formulaire ?

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ben dans l'action à la fin du script de traitement des données ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    Oui bien sur mais comment recupérer ma fenetre principale dans mon action Java ? et fermer le popup dans mon action Java ... Je ne sais pas non plus.

    Apres qque recherche, j'ai penser a une autre méthode :
    - remplir le formulaire dans le popup fils
    - mettre un input button a la place d'un submit et mettre sur onclick une fonction java qui remplie un formulaire caché dans la page mere avec les donnes remplie ds le form du popup fils.
    - a la fin de la fonction javascript on soumet le formulaire présent dans la classe mere (donc avec les valeurs remplies dans le popup). Ainsi le forward de l'action java se fera sur la page mere.

    est ce une bonne idée a votre avis ? J'ai commencé a faire ca ca marche plutot pas mal, mais j'ai un souci avec la touche entree. Si je fais "entree", le formulaire va etre soumis a partir du popup et donc le forwad se fait qsur le popup... Quand je click sur mon button tout marche bien ..

    Comment remedier a cela ? je ne veux pas dessactiver ma touche entree. je veux pourvoir attribuer une action sur ma touche entree en fait.

    SpaceFrog, je suis tjs ouvert a ta proposition mais je ne comprend pas comment tu veux faire...

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Non la popup tu la gères depuis la mère

    ensuite tu lances l'action ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  15. #15
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    J'ai trouvé un moyen tout simple à mettre en oeuvre. C'est vraiment super simple par rapport aux solutions ( qui ne marche pas ) évoqué avant ^^

    En fait, il faut absolument que les différentes opérations (Liste des entrées puis edition d une entree puis mise a jour dans la bdd, puis enfin liste des élements) se fasse à partir de la meme page. il s'agit donc de donner une target, pointant vers la page mere, au formulaire remplie dans la popup. Cela permettra que le formulaire soit envoyé a partir de la page mere.

    voila comment procéder :
    Dans la page mere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <script type="text/javascript">
        <!--
            window.name="pageMere";
        // -->
    </script>
     
    window.open(etc etc...); //ouvre le popup
    dans le formulaire du popup, on pointe vers la page Mere, et on met un window.close() sur le onclick
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:form action="/action" target="pageMere">
    //les inputs etc ...
    <input align="right" type="submit" value="Valider" onclick="window.close();">
    Comme ceci, il n'y a plus de probleme, la mise a jour de la bdd est faite avant le rechargement de la page puique le rechargement de la page est faite via un forward dans l'action.

    Merci a tous pour votre aide ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. La page se charge deux fois
    Par DeveloppeurWeb dans le forum ASP.NET
    Réponses: 3
    Dernier message: 22/10/2010, 12h38
  2. [2.0] FormsAuthentification charge deux fois ma page
    Par tscoops dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/01/2010, 11h10
  3. FORM qui charge deux fois ma page
    Par aloisio11 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/05/2008, 16h53
  4. Page chargée 2 fois
    Par Lideln dans le forum Apache
    Réponses: 6
    Dernier message: 21/02/2008, 23h00
  5. [C#][1.1] La page se charge deux fois
    Par misa dans le forum ASP.NET
    Réponses: 2
    Dernier message: 12/01/2006, 06h51

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