Javascript Разместить в форме Отправить в новом окне - PullRequest
146 голосов
/ 07 октября 2008

/100741/javascript-post-zapros-kak-forma-otpravit показывает, как отправить форму, созданную вами через JavaScript, по почте. Ниже мой модифицированный код.

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();

Я хотел бы открыть результаты в новом окне. Я использую что-то подобное, чтобы открыть страницу в новом окне:

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

Ответы [ 5 ]

216 голосов
/ 07 октября 2008

Добавить

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

или

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

к определению вашей формы.

128 голосов
/ 08 октября 2008

Если вы хотите создать и отправить свою форму из Javascript, как есть в вашем вопросе, и вы хотите создать всплывающее окно с пользовательскими функциями, я предлагаю это решение (я помещаю комментарии над добавленными мной строками):

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();
8 голосов
/ 25 сентября 2012
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();
1 голос
/ 07 января 2017

Простейшее рабочее решение для окна потока (протестировано в Chrome):

<form action='...' method=post target="result" onsubmit="window.open('','result','width=800,height=400');">
    <input name="..">
    ....
</form>
1 голос
/ 06 марта 2010

Я знаю этот основной метод:

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>

Works!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...