جافا سكريبت المشاركة على إرسال النموذج فتح نافذة جديدة

StackOverflow https://stackoverflow.com/questions/178964

  •  05-07-2019
  •  | 
  •  

سؤال

https://stackoverflow.com/questions/133925/javascript-post ، طلب مثل واحد في شكل تقديم يوضح لك كيفية إرسال نموذج التي تقوم بإنشائها عن طريق جافا سكريبت عن طريق آخر. فيما يلي قانون بلدي تعديلها.

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

ما أود فعله هو فتح النتائج في نافذة جديدة. أنا currentley باستخدام شيء من هذا القبيل لفتح الصفحة في نافذة جديدة:

onclick=window.open(test.html,'','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');
هل كانت مفيدة؟

المحلول

إضافة

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

أو

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

لتعريف النموذج الخاص بك.

نصائح أخرى

إذا كنت ترغب في إنشاء وتقديم النموذج الخاص بك من جافا سكريبت كما هو في سؤالك وتريد إنشاء نافذة منبثقة مع ميزات مخصصة أقترح هذا الحل (أنا وضعت التعليقات الواردة أعلاه خطوط أضاف ط):

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

<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>

والأشغال!

وأبسط حل لنافذة تدفق (اختبار في كروم) العمل:

<form action='...' method=post target="result" onsubmit="window.open('','result','width=800,height=400');">
    <input name="..">
    ....
</form>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top