web-dev-qa-db-fra.com

Puis-je POST dans une nouvelle fenêtre que je souhaite ouvrir?

Est-ce possible?

  1. Un site tiers utilise mon module Drupal
  2. Un utilisateur final clique sur un lien qui:
  3. Ouvrez une nouvelle fenêtre www.monsite.com/redirect.php
  4. et POST certaines données sur cette page www.monsite.com/redirect.php

J'ai vu le navigateur de l'utilisateur être redirigé, mais je ne vois pas comment procéder.

1
siliconpi

Si vous voulez juste un lien qui ouvre une page POST-demandée dans une nouvelle fenêtre, voici quelques idées. Cependant, sachez qu'une demande POST ne peut pas être mise en signet.

  • Vous pouvez créer un bouton qui ouvre une page demandée par le POST dans une nouvelle fenêtre.

    <form method="post" action="http://example.com/example.php"
      target="_blank">
    <input type="hidden" name="name1" value="value1">
    <input type="hidden" name="name2" value="value2">
    <input type="submit" value="Open results in a new window"> 
    </form>
    
  • Si vous souhaitez que cela ressemble à un lien, vous pouvez créer un lien avec un attribut onClick qui soumet le formulaire.

    <form name="myform" method="post" action="http://example.com/example.php"
      target="_blank">
    <input type="hidden" name="name1" value="value1">
    <input type="hidden" name="name2" value="value2">
    </form>
    
    <a href="http://example.com/example.php"
      onClick="document.forms['myform'].submit(); return false;">Open results
      in a new window</a>
    

    La partie onClick soumet le formulaire, ce qui ouvre la page demandée par le POST dans une nouvelle fenêtre. Le return false empêche le navigateur de se rendre simultanément à l'adresse href de la fenêtre en cours. Si Javascript est désactivé ou si le lien est mis en favori, l'adresse href est utilisée comme solution de secours, mais la page résultante ne reçoit aucune valeur POST. Cela pourrait prêter à confusion ou être peu convivial pour vos utilisateurs s'ils ajoutaient le lien au signet.

Si vous souhaitez que le lien devienne un signet, déterminez si votre page peut accepter les paramètres GET. Si c'est le cas, vous pouvez créer un lien avec un signet.

 <a href="http://example.com/example.php?name1=value1&name2=value2"
   target="_blank">Open results in a new window</a>
6
Bavi_H