Javascript jquery 在选项卡中打开页面并传递一些 POST 值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7024040/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-24 00:18:26  来源:igfitidea点击:

jquery open page in a tab and pass some POST values

javascriptjquery

提问by michele

how can I open in a new window a php page and pass in some POST variable? I am using jquery.

如何在新窗口中打开一个 php 页面并传入一些 POST 变量?我正在使用 jquery。

Thank you.

谢谢你。

回答by M. Cypher

I would suggest creating an invisible form in your HTML like this:

我建议在你的 HTML 中创建一个不可见的表单,如下所示:

<form id="invisible_form" action="new_window.php" method="post" target="_blank">
  <input id="new_window_parameter_1" name="parameter" type="hidden" value="default">
</form>

..and then submitting it via jQuery:

..然后通过jQuery提交它:

$('#new_window_parameter_1').val('value');
$('#invisible_form').submit();

回答by Andron

Here is a sample how to submit a hidden form via POST:

以下是如何通过 POST 提交隐藏表单的示例:

function submit_post_via_hidden_form(url, params) {
    var f = $("<form target='_blank' method='POST' style='display:none;'></form>").attr({
        action: url
    }).appendTo(document.body);

    for (var i in params) {
        if (params.hasOwnProperty(i)) {
            $('<input type="hidden" />').attr({
                name: i,
                value: params[i]
            }).appendTo(f);
        }
    }

    f.submit();

    f.remove();
}

And to use it:

并使用它:

submit_post_via_hidden_form(
    'some link',
    {
        val1: val1,
        val2: val2
    }
);

回答by grupowebex

Lite version with simple array compatibility:

具有简单数组兼容性的精简版:

    var url = 'myurl.html';
    var params = {
        inputId: 'somevalue',
        itemArray: ['as','a','example']
    };

    var f = $("<form target='_blank' method='POST' style='display:none;'></form>").attr({
        action: url
    }).appendTo(document.body);

    for (var i in params) {
        if (params.hasOwnProperty(i)) {
            if($.isArray(params[i])) {
                for (var j in params[i]) {
                    $('<input type="hidden" />').attr({
                        name: i + '[]',
                        value: params[i][j]
                    }).appendTo(f);
                }
            } else {
                $('<input type="hidden" />').attr({
                    name: i,
                    value: params[i]
                }).appendTo(f);
            }
        }
    }

    f.submit();
    f.remove();