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 :

Recharger window.opener sans la méthode reload()


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2005
    Messages : 15
    Points : 16
    Points
    16
    Par défaut Recharger window.opener sans la méthode reload()
    Bonjour !

    J'ai une page qui liste des contacts, et qui permet d'ajouter un nouveau contact (ça ouvre une pop-up). Une fois le contact ajouté grace à la pop-up, j'aimerai que ma page principale soit rechargée, afin de bien montrer que le contact est présent dans la liste !

    A priori rien de plus simple, il suffit dans ma pop-up, de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    document.forms.priv_form.submit();
    window.opener.location.href="liste_contacts.php";
    Sauf que ça ne marche pas du tout ! la page principale, qui contient déjà liste_contacts.php ne se recharge pas !!
    J'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    window.opener.location.replace("liste_contacts.php");
    et
    window.opener.location="liste_contacts.php";
    Rien à faire, ça ne recharge pas non plus ...
    Le seul code qui recharge est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window.opener.reload("liste_contacts.php");
    Mais ça pose un énorme problème car c'est l'équivalent de la touche F5, or, ma page liste_contacts.php contient un formulaire envoyé par POST, et donc que ça raffraichit, dans tous les navigateurs, j'ai un message qui m'avertit que les données POST vont être réenvoyées au serveur, c'est pas bon !

    Avez vous une idée pour recharger correctement cette foutu page ???
    Pitié ne me dites pas de recoder ma page pour envoyer et recevoir en GET au lieu de POST ...

    Merci d'avance !

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    opener.location.replace("liste_contacts.php");

  3. #3
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut Re: Recharger window.opener sans la méthode reload()
    Citation Envoyé par Palmic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    window.opener.location.replace("liste_contacts.php");
    Ca devrait marcher, ça.... vérifie si il n'y a pas un problème ailleurs...

    Citation Envoyé par Palmic
    Pitié ne me dites pas de recoder ma page pour envoyer et recevoir en GET au lieu de POST ...
    Ca serait une bonne idée, ça

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    Oups j'avais pas vu

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2005
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Pymm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    opener.location.replace("liste_contacts.php");

    Ben j'avais déjà essayé, et ça ne marchait pas ...
    J'ai réessayé ce matin, en corrigeant des warnings coté serveur (donc php, rien à voir avec javascript ) et là ... ça marche ... la page se recharge !!

    Mais j'ai un nouveau problème classique : la page principale se recharge trop vite, avant que le script serveur de la pop-up ait le temps de terminer l'insertion ou la modification d'un contact, et donc on ne voit pas les modifications ...

    J'ai donc eu l'idée de mettre un setTimeout afin d'attendre environ 1 seconde entre l'envoi des données de la pop-up et le replace de window.opener , et là, ça ne marche plus du tout, la page principale ne se rafraichit plus ...

    Je comprendrai jamais rien à javascript moi ...

  6. #6
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Palmic
    J'ai donc eu l'idée de mettre un setTimeout afin d'attendre environ 1 seconde entre l'envoi des données de la pop-up et le replace de window.opener , et là, ça ne marche plus du tout, la page principale ne se rafraichit plus ...
    Bonne idée, qui marche.
    Tu as essayé quel code?
    Quelque chose de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    document.forms.priv_form.submit(); 
    window.setTimeout(function(){window.opener.location.replace("...")},1000);
    Ca marche ce genre de chose.... A toi de nous dire en quoi ton truc est différent

  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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    fait plutot un while (!nouveaucontact) ou un truc du genre et lance le reload après ...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2005
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par denisC
    Ca marche ce genre de chose.... A toi de nous dire en quoi ton truc est différent
    Et bien mon code est ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    document.forms.priv_form.submit();
    a = window.setTimeout("reload_opener()", 1000);
     
    avec reload_opener :
     
    function reload_opener()
    {
    	window.opener.location.replace("liste_contacts.php");
    }
    Donc voilà rien de bien compliqué ... Je précise que je développe sous Firefox donc je vois tout de suite quand il y a un warning ou une erreur javascript.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2005
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Je me permet de me répondre, car j'ai trouvé une solution, qui s'apparente plus à une feinte qu'autre chose, mais bon, peut être que ça peut interesser des gens :

    Donc, pour réussir à raffraichir la page principale, et ce seulement quand le script serveur de la pop-up a terminé l'insertion/modification de contact, voici ce que j'ai fait :

    Une fois que le script serveur de la pop-up a terminé son travail, la pop-up se recharge, et là, j'en profite pour lui placer un évènement onload sur la balise body, qui contient simplement "window.opener.location.replace(...)".

    Ainsi, quand la pop-up se recharge, ça signifie que le serveur a terminé le code métier, et donc le onload du body met à jour opener au bon moment, ce qui permet d'admirer l'ajout effectif du contact ou sa modification !

    Voilà, j'ai encore un truc à testé, si c'est bon, je cliquerai sur "résolu" !

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

Discussions similaires

  1. window.open sans favoris
    Par jpguiche dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/05/2013, 14h35
  2. window.open sans barre de titre
    Par lesultan2007 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/05/2009, 13h13
  3. simuler href mais sans window.open et sans window.location.href
    Par virgrennes dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/01/2008, 09h18
  4. window.opener.location.reload() avec message POST
    Par lodan dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/08/2007, 07h45
  5. [popup] window.opener.reload + parametres ?
    Par kurtalis dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/06/2006, 15h16

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