2010-03-28 6 views
2

J'ai un formulaire HTML avec les données par cette méthode postrediriger vers une nouvelle page avec les données de poste en Javascript

'form id='form1' name='form1' method='post' action='process.php'etc ' 

à une page php pour le traitement dans une base de données MySQL. Lorsque l'utilisateur a rempli le formulaire AVANT de le soumettre, j'ai un bouton sur lequel l'utilisateur peut cliquer pour ouvrir une nouvelle page pour afficher un pdf des données saisies. Le nouveau fichier pdf est bien généré, mais ce dont j'ai besoin c'est les données post du formulaire. Dans la page pdf, je peux utiliser POST pour obtenir les détails. Ce dont j'ai besoin, c'est d'une méthode pour envoyer les données du formulaire à cette nouvelle page sans utiliser l'étiquette de formulaire ci-dessus car elle est nécessaire pour le traitement du formulaire. Ce que je cherche est une méthode js pour rediriger vers une nouvelle page avec les données intactes

Quelqu'un peut-il vous aider s'il vous plaît? , Toute aide est très appréciée ! Mick

Répondre

1

Je pense savoir ce que vous voulez dire. Vous souhaitez publier le formulaire dans une fenêtre contextuelle, sans recharger ou soumettre la page ou le formulaire en cours.

Vous pouvez réellement ouvrir une fenêtre contextuelle, avec un nom, et ensuite définir la cible du formulaire à cette nouvelle fenêtre contextuelle. Puis changez tout de suite à "_TOP" et vous devriez aller bien.

Je vous recommande d'utiliser jquery, si ce n'est déjà fait. Cela rend le javascript beaucoup plus pratique.

0

Il n'y a aucun moyen de "rediriger" avec les données de publication. Vous pouvez utiliser une balise séparée sous forme cachée et d'avoir le bouton soumettre l'autre forme:

<form id="form1" name="form1" method="post" action="process.php"> 
    <!-- form1's inputs here --> 
    <button type="button" onclick="document.getElementById('form2').submit()"> 
    Popup PDF! 
    </button> 
</form> 
<form id="form2" name="form2" method="post" action="form.pdf"> 
    <input type="hidden" name="field1" value="some value" /> 
    <!-- etc... --> 
</form> 

Alternativement, si vous souhaitez publier la même forme à une autre page, vous pouvez simplement changer l'action attribut temporaire et changement retour:

document.getElementById("popupButton").onclick = function() 
{ 
    var frm1 = document.getElementById("form1"); 
    frm1.action = "myPDF.pdf"; 
    frm1.submit(); 
    frm1.action = "process.php"; 
} 
+0

de nombreux serveurs ne permettent pas la manipulation de postdata mime: pages html. Lorsque le but est de rendre les données disponibles pour le JavaScript d'une autre page, cela ne fonctionnera souvent pas. – SamGoody

+0

@SamGoody: votre commentaire n'a pas vraiment de sens dans le contexte de la question et de cette réponse (ou du moins, si je suis honnête). Pouvez-vous clarifier ce que vous voulez dire et pourquoi cela est pertinent ici? –

+0

OK - Ce n'est pas pertinent ici, car il a précisé qu'il essaie de rediriger vers un fichier PDF généré par une page PHP. Néanmoins, la même question est souvent posée lorsque la page de réception aura ses données remplies par JavaScript. Même question que ci-dessus: La page 1 contient un formulaire. Avant de soumettre au serveur il est passé dans une popup ou une autre page formatée qui utilise les données. Où Page # 2 est un HTML ou une autre page non dynamique, votre méthode de redirection ne fonctionnera pas. Au lieu de cela les données devront être envoyées en utilisant GET ou des cookies. Espérons que cela profitera à quelqu'un, s'il vous plaît ne soyez pas déformé. – SamGoody

2

Généralement, vous ne voulez pas utiliser javascript comme un outil de fonctionnalité majeur, tout le monde ne l'a pas activé, donc votre script pourrait être facilement cassé pour certains, mauvais moments!

Il y a quelques cadres là-bas qui permettent cela, la redirection et en conservant la variable, Kohana 3.0 $ _POST est un où vous pouvez simplement taper votre contrôleur:

echo Request::factory('redirect location')->post($_POST)->execute(); 

qui ferait que, sans l'utilisation de javascript, Heres un article si vous voulez en savoir plus sur la façon dont cela fonctionne: http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/

Hope qui aide :)

Questions connexes