web-dev-qa-db-fra.com

Après avoir soumis un formulaire POST, ouvrez une nouvelle fenêtre affichant le résultat

demande de publication JavaScript comme une soumission de formulaire vous montre comment soumettre un formulaire que vous créez via POST en JavaScript. Ci-dessous, mon code modifié.

var form = document.createElement("form");

form.setAttribute("method", "post");
form.setAttribute("action", "test.jsp");

var hiddenField = document.createElement("input");  

hiddenField.setAttribute("name", "id");
hiddenField.setAttribute("value", "bob");
form.appendChild(hiddenField);
document.body.appendChild(form); // Not entirely sure if this is necessary          
form.submit();

Ce que je voudrais faire, c'est ouvrir les résultats dans une nouvelle fenêtre. J'utilise actuellement quelque chose comme ceci pour ouvrir une page dans une nouvelle fenêtre:

onclick = window.open(test.html, '', 'scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');
148
John

Ajouter

<form target="_blank" ...></form>

ou

form.setAttribute("target", "_blank");

à la définition de votre formulaire.

216
liggett78

Si vous souhaitez créer et soumettre votre formulaire à partir de Javascript tel qu'il est dans votre question et que vous souhaitez créer une fenêtre contextuelle avec des fonctionnalités personnalisées, je propose cette solution (je mets des commentaires au-dessus des lignes que j'ai ajoutées):

var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "test.jsp");

// setting form target to a window named 'formresult'
form.setAttribute("target", "formresult");

var hiddenField = document.createElement("input");              
hiddenField.setAttribute("name", "id");
hiddenField.setAttribute("value", "bob");
form.appendChild(hiddenField);
document.body.appendChild(form);

// creating the 'formresult' window with custom features prior to submitting the form
window.open('test.html', 'formresult', 'scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');

form.submit();
129
Marko Dumic
var urlAction = 'whatever.php';
var data = {param1:'value1'};

var $form = $('<form target="_blank" method="POST" action="' + urlAction + '">');
$.each(data, function(k,v){
    $form.append('<input type="hidden" name="' + k + '" value="' + v + '">');
});
$form.submit();
8
luchaninov

La solution de travail la plus simple pour la fenêtre de flux (testée sur Chrome):

<form action='...' method=post target="result" onsubmit="window.open('','result','width=800,height=400');">
    <input name="..">
    ....
</form>
1
GKislin

Je connais cette méthode de base:

1)

<input type=”image” src=”submit.png”> (in any place)

2)

<form name=”print”>
<input type=”hidden” name=”a” value=”<?= $a ?>”>
<input type=”hidden” name=”b” value=”<?= $b ?>”>
<input type=”hidden” name=”c” value=”<?= $c ?>”>
</form>

3)

<script>
$(‘#submit’).click(function(){
    open(”,”results”);
    with(document.print)
    {
        method = “POST”;
        action = “results.php”;
        target = “results”;
        submit();
    }
});
</script>

Travaux!

1
Edu Carrega