89 en ligne Comparateur | Sites | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  

 Recherche

 Newsletter





 

Ouvrir un popup avec un envoi POST

Code JavaScript par CrazyCat



  <Accueil>  Déjà 692 codes ! 
AJAX [5]AS 2.0 [1]ASP [111]ASP.NET [34]CSharp [11]CSS [14]
D [1]Delphi [5]DHTML [3]Divers [5]HTML [16]JavaScript [154]
JSP [9]Maths [1]PHP [254]PHP5 [18]PowerShell [22]Regex [4]
SQL [2]V.Basic [4]VBScript [11]VS.NET [5]WPF [1]XML [1]



CrazyCatJavaScript - Ouvrir un popup avec un envoi POST

On m'a dit que ce petit code que j'utilise fréquemment n'est pas facile à trouver.
Le but est d'ouvrir une fenêtre en popup et de lui transmettre des informations (émanant d'un formulaire) par la méthode POST.
Voici donc le code, qui est en deux parties: le javascript et un petit bout à placer dans le HTML.

Principe du javascript: il ouvre une popup avec une page d'attente (cela peut être une page vide) puis envoi le formulaire.

Principe du HTML: le bouton déclenche le javascript. Si le javascript est désactivé dans le navigateur, il accompli son action normale dans la même fenêtre.

JavaScript
Pour pouvoir le télécharger, connectez-vous ! ;)
<script language="javascript" type="text/javascript">
function pop_it(the_form) {
   my_form = eval(the_form)
   window.open("./wait.php", "popup", "height=440,width=640,menubar='no',toolbar='no',location='no',status='no',scrollbars='no'");
   my_form.target = "popup";
   my_form.submit();
}
</script>

<!-- HTML -->
<form name="chatform" action="./guests.php" method="post">
<p>
Nickname : <input type="text" name="nick" maxlength="32" size="12" value="" /><br />
Password : <input type="password" name="pass" size="12" /><br />
<input type="button" onclick="pop_it(chatform);" value="Tchatter" /></p>
</form>

Proposé par CrazyCat le 26/07/2005 [vu 76749 fois]
Commentaires
Phoenix2001
Phoenix2001
07/03/06

Bonjour,
petites question, a quoi sert le wait.php puisque la fenetre appellée est guests.php
CrazyCat
CrazyCat
07/03/06

Ainsi que je le dis dans la présentation, c'est une page d'attente.
Elle a un double intérêt:
1) on est sur que la popup est initialisée, elle a le focus
2) comme la popup est ouverte AVANT l'envoit du formulaire, ça évite d'ajouter un traitement dans la page guest.php pour savoir si les données ont été envoyées ou pas.
Naycko
Naycko
18/03/06

Merci, c'est de la grosse balle!!!!
pitchoune
pitchoune
02/05/06

bonjour,
 ton code m'intéresse beaucoup mais moi je souhaiterais pouvoir ouvrir 4 pages différentes (donc 4 boutons) en pop-up, c'est possible?

Merci ;)
CrazyCat
CrazyCat
02/05/06

il est très facile de modifier la fonction pop_it() pour lui transmettre un identifiant de page, il suffit après que chaque bouton envoit le bon identifiant, et que l'url de destination soit transformée comme tu le désire.
pitchoune
pitchoune
02/05/06

excuse moi, mais j'y connais rien en javascript et j'ai du mal à appliquer ce que tu me dis.

comment es ce que je peux modifier l'url alors que je n'ai qu'un seul formulaire?
Bouillou
Bouillou
18/06/06

Hello,

Pourquoi ne pas utiliser la methode "onSubmit" de la forme pour lancer l'exécution d'un script qui ouvre le popup de page d'attente?

C'est plus simple et plus joli non?

Bouillou
CrazyCat
CrazyCat
18/06/06

Si j'utilise cette méthode, c'est pour une raison très simple: le formulaire n'est soumis que si la popup est effectivement ouverte.

En fait, je me sers de ce script pour ouvrir des urls distantes, donc je préfère que ma popup soit proprement ouverte et disponible, ça me permet d'être sur que le serveur distant n'est pas mort.
scalp
scalp
19/06/06

bonjour,

j'ai utilisé le code qui marche tres bien ;) !!!

mon pb, parce qu'il y a tjs un probleme, est que je voudrais que les donnees de cette popup puisent etre retransmises par methode post sur la page qui l'a ouverte.
j'ai esayé plusieurs trucs mais au lieu de renvoyer les donnees sur la page "mère", il ouvre une nouvelle fenetre ...

voila mon code dans la popup :
fonction javascript {
my_form = eval(form)
my_form.target=window.opener.location;
my_form.submit();
window.opener.refresh();
window.close();
}

merci de votre aide ;) !!!
CrazyCat
CrazyCat
19/06/06

je ferais plutôt quelque chose du genre:
fonction send(form) {
   my_form = eval(form);
   my_form.target=window.opener; // la target est l'opener, pas son emplacement
   my_form.action = "./opener.php"; // là, c'est bien le fichier qui doit traiter les données
   my_form.submit(); // on poste le formulaire
   self.close(); // on peut fermer la fenêtre
}
scalp
scalp
19/06/06

wow quelle rapidité !!! :)

en fait form.target precise où va s'afficher le resultat ?
bon ben j'ai testé mais ca marche pas !!! :(
ptet que ca marche que sous ie ??
CrazyCat
CrazyCat
19/06/06

Dans ce cas, ce qu'il faut faire est simple:
dans ta fenêtre "principale", tu choisis un nom en faisant:
window.name = "nomdelafenetre";

et dans le popup, tu fais:
my_form.target = "nomdelafenetre";
domJ
domJ
27/08/06

Bravo pour cette trouvaille !

J'ai une petite question.
Comment faire pour que le pop-up reste toujours devant et ne s'ouvre pas à chaque changement et validation de données dans le formulaire ?

Ca serait nickel !
domJ
domJ
27/08/06

Ah ben j'ai trouvé ;-)

Enfin, je crois.

Bon ben en réponse à ma question (mais il y a sans doute plus simple), voici une petite modification du code ci-dessus qui permet de mettre la pop-up devant et de fermer l'ancienne quand on la rappelle avec de nouvelles données :

<script language="javascript" type="text/javascript">
var newWin = null;
function closeWin(){
   if (newWin != null){
      if(!newWin.closed)
         newWin.close();
   }
}

function pop_it(the_form) {
   my_form = eval(the_form)
   closeWin();
   newWin = window.open("wait.php", "popup", 'top=10,left=10,resizable=no, location=no, width=200, height=100, menubar=no, status=no, scrollbars=no, menubar=no');
   my_form.target = "popup";
   my_form.submit();
   newWin.focus();
}
</script>

En revanche si on désactive le javascript l'utilisateur ne voit rien se passer :-(. Je comprends pas bien ta phrase : "Si le javascript est désactivé dans le navigateur, il accompli son action normale dans la même fenêtre." En gros chez moi il se passe rien.
CrazyCat
CrazyCat
28/08/06

A mon avis, tu te complique la tâche pour pas grand chose.
En fait, tu veux qu'on puisse renvoyer le formulaire sans ouvrir une nouvelle popup si elle est déjà ouverte?
Il ne te sert à rien de la refermer:
<script>
function pop_it(the_form) {
   my_form = eval(the_form);
   if (newWin != null) {
      newWin = window.open("wait.php", "popup", 'top=10,left=10,resizable=no, location=no, width=200, height=100, menubar=no, status=no, scrollbars=no, menubar=no');
   }
   my_form.target = "popup";
   my_form.submit();
   newWin.focus();
}
</script>

Concernant ta question sur le fonctionnement "sans javascript": si tu as bien mis le bon "action=" dans ta définition de forumlaire, le fonctionnement par défaut est d'envoyer les données dans la fenêtre courante.
galem3
galem3
12/09/06

Bonjour tout le monde,

Je desire envoyer une page avec des informations sur 4 PC.

Merci par avance
asdphil
asdphil
29/09/06

Bravo pour ton script, je me prenais la tete depuis des heures avec ces passages de variables ! Th very best of !!!
fx
fx
20/10/06

Bravo pour ce code et cette fonction pop-it très très utile.
j'ai toutefois une contrainte supplémentaire : comment réaliser ce même envoi de post vers une pop up non pas avec un input type "button" mais avec un input type "image" (qui n'accepte apparemment pas l'attribut "onclick") ?
chris26
chris26
06/01/07

Bonsoir !

J'ai utilisé ton script pour faire un bouton de preview (et donc prévisualiser les infos en pop up). Sauf que quand je décide que c'est ok et que j'appuie sur le bouton envoyer, la page qui me confirme l'envoi s'ouvre dans une nouvelle fenetre (pas une pop up)

J'ai tenté un petit script pour y remédier que j'appelle sur le bouton envoyer, pour bien lui dire d'ouvrir dans la fnetre où il se trouve, et ça ne marche toujours pas. A la place de document, j'ai aussi essayé parent, this, ...


function envoi(the_form) {
   my_form2 = eval(the_form)
   my_form2.target=document;
   my_form2.submit();
}


Une idée ?
rebekos
rebekos
09/01/07

ca ne fonctionne pas avec firefox ?!
springo
springo
07/03/07

Bonjour CrazyCat
Merci pour ce code tout simple, j'avais trouvé une astuce mais c'était compliqué.

Par contre, j'ai un problème ; avec IE7, ça marche très bien quand on utilise un bouton, la fenêtre s'ouvre.

Or, mon formulaire est composé d'une liste déroulante.
J'aimerais pourvoir remplacer le bouton par un simple "onchange" (ou onclick, ce sera pareil) dans ma balise select.
Le problème, c'est que dans ce cas, avec IE 7, le bloqueur de fenetres intempestives agit, alors qu'il ne le fait pas quand c'est un bouton :
http://www.duranton-consultants.fr/References1.htm

Donc mon client a râlé parce que ça ne marchait pas et qu'il n'avait pas vu le coup du bloqueur de fenetre. Il est pourtant sur internet tous les jours... je suppose donc qu'il y a des tas d'autres billes comme lui parmi ses clients à lui (et il n'utilise pas FF avec qui ça marche bien, et ses clients non plus). .

Donc j'ai mis un petit bouton, mais j'aimerais m'en passer, c'est plus élégant, un onChange !

Auriez-vous une astuce ?

Merci
Springo
pask2
pask2
26/03/07

Si je puis me permettre un p'tit plus :
--> dans la balise <input type="button" onclick="pop_it(chatform);">

ecrire plutôt :
<input type="button" onclick="pop_it('chatform');return false;">

Bien utile dans mon cas pour éviter la double incrémentation des variables du POST dans un INPUT INTO. Peut-être aurais-je pu traiter l'affaire autrement, mais là c'est efficace et rapide.

En tous cas ton petit script me fut très utile.

thieu
thieu
18/04/07

Pour respecter le xhtml, l'attribut name devient id pour la balise form. Avec cette seule modification, il se trouve que la fonction pop_it ne fonctionne plus sous Firefox (remarque de rebekos?).
Je l'ai donc modifiée comme suit:

function popIt(idForm) {
   my_form = document.forms[idForm]
   window.open("./wait.php", "popup", "height=440,width=640,menubar='no',toolbar='no',location='no',status='no',scrollbars='no'");
   my_form.target = "popup";
   my_form.submit();
}

...avec comme code HTML pour le formulaire:

<form action="./guests.php" method="post" id="idForm">
   <p>
   Nickname : <input type="text" name="nick" maxlength="32" size="12" value="" /><br />
   Password : <input type="password" name="pass" size="12" /><br />
   <input type="button" onclick="pop_it(chatform);" value="Tchatter" /></p>
</form>
thieu
thieu
18/04/07

Euh, pour le bouton de validation, j'me suis banane dans le copier/coller; ça donne ça:

   <input type="button" onclick="pop_it('idFom');" value="Tchatter"
onyryc
onyryc
19/04/07

bonjour

Je reviens sur le probleme de scalp.

J'ai bien mis window.name = "nomdelafenetre"; dans la fenetre principale (on doit bien mettre ce bout de code dans la fonction pop_it ?).

Mais lorsque je ferme le popup il n'est pas fermé et affiche ce qu'aurais du afficher la page d'origine rafraichie... :(

Merci ;)
calitom
calitom
29/06/07

Bonjour,

Je voulais savoir comment mettre en forme la fenetre lorsque on utilise cette fonction:
function pop_it(form) {
my_form = eval(form);
my_form.target=window.opener;
my_form.action = "transfert.php";
my_form.submit();
}

Car je ne comprend pas bien où la fenetre est crée...
Je débute en javascript...
CrazyCat
CrazyCat
29/06/07

La page de destination est, dans ton cas, transfert.php. C'est elle qui sera la popup et que tu dois donc modifier.
calitom
calitom
29/06/07

Merci j'ai réussi...
Voila comment j'ai fais:
function pop_it(the_form)
{
 my_form = eval(the_form)
 window.open("transfert.php", "popup", "top=300,left=400,height=400,width=480,menubar='no',toolbar='no',location='no',status='no',scrollbars='no'");
 my_form.target = "popup";
 my_form.action = "transfert.php";
 my_form.submit();
}
rmed19
rmed19
17/07/07

il fonctionne bien avec firefox
mioux
mioux
27/07/07

Il est normal que ce code ne fonctionne plus avec xhtml étant donné que xhtml n'autorise pas les target (et utiliser une fonction window.open() pour contourner ca ne résous pas le problème)
A moins d'utiliser le xhtml transitionnel (où l'attribut "name" est présent mais déprécié) ce code n'est donc pas valide en xhtml strict
TEAM6767
TEAM6767
29/09/07

J'aimerai bien me servir de ce code, qui est en effet, parfait.


Mais j'aimerai l'adapter à une connexion sur mon jeu.

Donc j'aimerai savoir si la vérification de la connexion ce fait plutôt dans la page wait.php ou guests.php???


Je me suis dis que je peux le mettre dans le wait.php et que s'il l'utilisateur n'a pas entré le bon code, la page guests.php ne s'ouvre pas. Mais je ne vois pas vraiment comment faire.

Comme mon jeu a besoin du javascript pour des messages important au joueur, ce serait aussi un moyen de vérifier l'acceptation du JS, pour qu'il ne puisse pas dire qu'il l'a pas vu.


Comme je ne gère pas encore bien javascript, mais plutôt PHP, je me demandais aussi si les valeurs de nick et de pass sont envoyés à wait.php???


Merci d'avance.
woodyfrance
woodyfrance
28/01/08

Bonjour à tous,
J'arrive un peu tard dans toute cette discussion mais je dois être un peu benet mais je suis incapable de faire fonctionner ce bout de code sous IE7. Le popup s'ouvre bien, la page que je souhaite afficher aussi, mais pas dans le popup mais dans une 2e fenêtre. J'ai essayé tout ce qui est proposé dans cette discussion mais rien ne change. D'autres idées ? Quelqu'un peut-il publier un code qui fonctionne sous IE7 ?
Merci
samax
samax
20/04/08

Bonjour,
Je veux bien essai ton code mais dans mon cas je ne vois pas comment faire passe mon paramétré ‘qte’ vers window.open au moyen de la méthode POST.

$SQL =mysql_query("SELECT * FROM produit WHERE quantite > 0");
$i=0; $max=4; $fiche=1;
 while ($data = mysql_fetch_array($SQL)) {
    <form name="formProd" method="post" action="AjoutPanier.php">
   <SELECT name="qte">
           $j=1;
    while($j <= $data["quantite"]) {
?>    <OPTION value=<?php echo $j;?> selected><?php echo $j;?></OPTION>
<?php    $j++;
    }
?>    <input type = 'button' name = 'panier' value='Ajouter au Panier' onClick="javascript:ajoutpanier('<?php echo $data["ref"]; ?>')">
    </SELECT>
       </form>

 // javascripte
<script language="JavaScript">
function ajoutpanier(ref) {
 var wth = 520, hht = 460
 var gau= (screen.width-wth)/2
 var hau= (screen.height-hht)/2
 window.open("AjoutPanier.php?ref="+ref,                        "","scrollbars=yes,width="+wth+",height="                     +hht+",left="+gau+",top="+hau)
 }
</script>
Cp77
Cp77
03/06/08

Merci, c'est exactement ce que je cherchais et ca fonctionne niquel.
nebil
nebil
21/07/08

cela ne fonctionne pas quand le formulaire est dans une boucle
" while " ????
nebil
nebil
21/07/08

il faut sortir </form> de la boucle
nebil
nebil
23/07/08

bonjour ,
a quoi sert le deuxieme argument qui se nome "popup" de la balise window.open
window.open("./wait.php", "popup" etc.....

merci
The_SorroW
The_SorroW
29/07/08

Bonjour j'ai un soucis avec ce code.
Soit j'ai rien compris soit je n'ai pas su l'utiliser ou les deux lol.

Voila lorsque je clique sur mon bouton previsualiser j'ai ma pop up qui s'ouvre avec à l'intérieur les champs, input, textarea, ... de mon form ?? J'aurai juste voulu récupérer les données cependant.

Merci de votre aide. Je bloque et c'est urgent :(
jmtrager
jmtrager
30/07/08

Je cherche à faire la même chose que scalp

je ne vois pas où on fait le
window.name="nomdelafenetre"
dans la fenetre principale.

Je cherche à ouvrir une fenetre et à la fin de l'excution de mon script,
je souhaire que ma fenetre principale affiche des information differente.
Comment la fenetre principale peut recevoir l'ordre de se rafraichir?


xdiz
xdiz
25/08/08

Voici un valid xhtml, car l'attribut name dans la balise form est non valid !

<script language="javascript" type="text/javascript">
function pop_it(the_form) {
   my_form = document.getElementById(the_form);
   window.open("", "popup", "height=800,width=600,menubar='yes',toolbar='yes',location='no',status='no',scrollbars='no'");
   my_form.target = "popup";
   my_form.submit();
}
</script>
<!-- HTML -->
<form action="guests.php" method="post" id="chatform">
<p>
Nickname : <input type="text" name="nick" maxlength="32" size="12" value="" /><br />
Password : <input type="password" name="pass" size="12" /><br />
<input type="submit" onclick="pop_it(chatform);" value="Tchatter" /></p>
</form>

Pour participer, il faut d'abord vous identifier !
284 visiteurs ont déjà participé dont :
DB77 [47]fmarie [26]Fabrice69 [25]CedX [23]Didier [22]
Bisou [20]tedheu [20]mohman [17]jreaux62 [16]romuluslepunk [15]
foxmaster [15]Vonscott [12]iubito [10]Redo [9]Balin [8]
poppy [7]fmaunier [6]cyrillus [6]pseudomenace [6]CrazyCat [5]
antoun [5]Pozzy [5]TBliss [5]Aurelien [5]daoudi [5]
Ours [5]bahdot [5]david96 [5]houcem_tsp [4]Chrigou [4]
debackp [4]lex [4]hyoucef [4]Jips [4]zut69 [3]
salem [3]berguerand01 [3]phenixbd [3]twins20 [3]kandal [3]
mhaido [3]mcorgnet [3]philouonline [3]master-killer [3]Maclearner [3]
crocxx [3]laetyboop [3]Poucet [3]olivierland94 [3]

Didier Téléchargez gratuitement et légalement des logiciels Microsoft ! Si, si ;)
  • Visual Studio 2010
  • Office 2010
  • Expression Studio 3
  • SQL Server 2008
  • et d'autres...

Au fil des news  
Magazines - Le N°128 de Programmez est disponible
Magazines - Le N°127 de Programmez est disponible
Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 6
Pour continuer dans le même style, je vous propose une suite au précédent article. Rechercher tous ...
Adobe - Adobe Photoshop.com Mobile pour iPhone 1.1
JavaScript - Ajouter une page dans vos favorites
Dreamweaver CS4 + Php + Mysql - Trucs et Astuces - Part 5 -
Je vous propose cette fois deux astuces. Comment exporter une feuille de style avec l'aide de ...
SharePoint Personalization Site Links - Les liens personnalisés des MySite SharePoint
Nous avons vu dans les articles précédents comment agrémenter les pages de recherche afin de ...
Magazines - Le n°126 de Programmez est disponible
Outils - Traducteur en ligne automatique pour site web
Adobe - Adobe Photoshop.com Mobile pour Iphone
Magazines - Le n°125 de Programmez est disponible
Adobe - Adobe AIR 2 et Flash Player 10.1version bêta
Les conférences autour des technologies Microsoft - Liste non exhaustive des grands évènements
Nous allons essayer de regrouper un grand nombre des évènements autour des technologies Microsoft ...
Magazines - Le n°124 de Programmez est disponible
PHP - Forum PHP 2009
Composants - eFace - XAML en Java
WPF - Désactiver le bouton de réduction d'une fenêtre
Magazines - Le n°123 de Programmez est disponible
Magazines - Le n°122 de Programmez est disponible
Auditer une ferme SharePoint - Assurer le bon fonctionnement de SharePoint
Dans le cadre de la bonne gestion de son environnement SharePoint, il est utile de faire un ...
SQL Server 2008 Report Builder 2.0 - Installation et utilisation de Report Builder 2.0
Dans le cadre de la création de rapports pour SQL Server Reporting Services 2008, un outil est ...
Magazines - Le HS N° 1 de Web Design est disponible
Adobe - Adobe propose en Open Source les frameworks.....
Outils - EntityBuilder
CSharp - Sérialisation XML de vos objets
Magazines - Le n°121 de Programmez est disponible
Adobe - Adobe annonce MAX 2009 !
Outils - WhoIs
[MAJ] Dreamweaver MX + Php + MySql - Les formulaires - partie 3
Mise à jour du code, par DB 77, affichage du code erreur, dans la page erreur.php, traduction des ...
PHP - News avec photo - Système de gestion - affichage
Gestion - Administration - Affichage d'une "News", "Actualité", "Info", ... avec : - mise en forme ...
Outils - Crypt
Dreamweaver Php Mysql - Région répétée imbriquée
Je rebondis, sur un post du forum, pour vous montrer comment obtenir grâce à l'extension Simulated ...
Magazines - Le n° 120 de Programmez est disponible
Gérer les bases de contenu SharePoint - Gérer la croissance du volume des données
Dans le cadre de la gestion quotidienne de ferme SharePoint, il existe une partie qu'il faut ...
PHP - Le Coach PHP sur Visual Studio
.NET - Ecrire une application .NET utilisant MySQL
PHP - Utilisation de PHP dans le monde Microsoft
Magazines - Le n° 119 de Programmez est disponible
Adobe - Adobe annonce Photoshop Marketplace
[MAJ] Tutoriel AJAX simple - En avant vers le WEB2.0
Mis à jour le 20/04/2009
  Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
  Scripts : Scripting | ASP-PHP | ASP.net | Divers
  Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats | Recherches
v4.3 © Didier YVER
2001-2010
 
 

Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
DotNet Project MVP Groupes Utilisateurs Microsoft ASP-magazine TechNet