Bonjour à tous,
J'ai un soucis javascript...
J'ouvre une fenetre popup avec un javascript:
Dans cette fenêtre, j'ai un formulaire qui fait une nouvelle entrée dans ma base de donnée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function openCenteredPopup(){ var w = screen.width, h = screen.height, popW = 422, popH = 200; var leftPos = (w-popW)/2, topPos = (h-popH)/2; window.open('?ctrl=Bookmark&action=NewBookmark','popup','width=' + popW + ',height=' + popH + ',top=' + topPos + ',left=' + leftPos); }
le bouton de validation du formulaire déclenche une action sur le PHP pour ajouter une entrée dans le MySQL mais aussi une action javascript qui permet de fermer la fenêtre popup et de réactualiser la page mère...
Je suis sur les forums français et anglais depuis ce matin à essayer de trouver une solution, mais ça ne marche pas... J'ai tout essayé
En gros, ma fonction javascript est maintenant de cette forme:
mais ça marche aussi avec un reload, ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function closePopup(){ self.close(); window.opener.location.href = ("?ctrl=Bookmark&action=index"); }
Le popup se ferme bien, le reload se fait, mais seulement, la page ne se réactualise pas bien à tous les coups, et c'est très aléatoire:
Certaines fois, je vois mon entrée apparaître, d'autre fois non, je suis obligé de rafraichir manuellement.
C'est un peu embêtant...
La piste que je soupçonne, c'est que:
-le temps que l'action PHP se fasse et,
-le temps de reload
sont assez similaire, donc certaines fois le POST n'est pas assez rapide, et la réactualisation n'inclut pas la nouvelle entrée.
J'ai donc essayé de mettre un timer sur l'action de fermeture du popup ou celle de reload de la page...
C'est le drame... Je n'arrive absolument pas a faire marcher le setTimeout dans la fonction close. Au départ, je pensais à une erreur de syntaxe, et j'ai mis le code du timeout dans la fonction d'ouverture du popup, ça marche dans cette fonction...
Je suis perdu, comment faire???
Je sais que ça marche bien, ça doit exister, puisque j'utilise egroupware, qui fait ce genre d'opération, et il n'y as jamais de soucis...
Merci d'avance pour votre aide, et désolé pour le roman
Partager