jQuery - 使用帖子数据重定向

IT技术 javascript jquery html post
2021-03-09 00:18:35

如何使用帖子数据重定向?

如何移动到新页面$_POST

这个怎么做?它是如何完成的,为什么要完成

6个回答

有一个 JQuery 插件几乎可以完成您想要做的事情:https : //github.com/mgalante/jquery.redirect/blob/master/jquery.redirect.js

在包含 JQuery 和 jquery.redirect.min.js 插件之后,您可以简单地执行以下操作:

$().redirect('demo.php', {'arg1': 'value1', 'arg2': 'value2'});

在较新的 JQuery 版本上使用以下代码:

$.redirect('demo.php', {'arg1': 'value1', 'arg2': 'value2'});

希望这可以帮助!

<script type="text/javascript"> $().redirect(' localhost:8080/vabc/index.php#data/t.php?param=12&edit=2 ', {'e': 'error'}) ; 不工作。我还有一个带有其他一些帖子变量的 <form> ,这些变量首先发布到同一页面,处理后,我使用 jquery 重定向重定向到带有一些新帖子变量的不同页面。
2021-04-23 00:18:35
所以我们不能重定向到不同的 url 并发布到不同的一个>?
2021-05-03 00:18:35
@TimS,在查看该链接后,我仍然不清楚如何使用 post 在新页面中检索数据。
2021-05-08 00:18:35
使用 jquery 2.1.3 对我来说正确的语法是 $.redirect(...); 没有括号。
2021-05-13 00:18:35
没关系,我想通了并让它工作了。很棒的建议!
2021-05-16 00:18:35

这是一个简单的小函数,只要您使用 jQuery,它就可以应用于任何地方。

var redirect = 'http://www.website.com/page?id=23231';
$.redirectPost(redirect, {x: 'example', y: 'abc'});

// jquery extend function
$.extend(
{
    redirectPost: function(location, args)
    {
        var form = '';
        $.each( args, function( key, value ) {
            form += '<input type="hidden" name="'+key+'" value="'+value+'">';
        });
        $('<form action="'+location+'" method="POST">'+form+'</form>').appendTo('body').submit();
    }
});

根据评论,我扩展了我的答案:

// jquery extend function
$.extend(
{
    redirectPost: function(location, args)
    {
        var form = $('<form></form>');
        form.attr("method", "post");
        form.attr("action", location);

        $.each( args, function( key, value ) {
            var field = $('<input></input>');

            field.attr("type", "hidden");
            field.attr("name", key);
            field.attr("value", value);

            form.append(field);
        });
        $(form).appendTo('body').submit();
    }
});
扩展的好主意。但是这个实现在将值放入value=""属性之前不会转义值因此,如果 value 包含引号,则它不起作用。函数本身可以替换为知道引用的函数,例如从这里:stackoverflow.com/a/5533477/1775065
2021-04-20 00:18:35
.appendTo('body')为移动设备添加...示例: $('<form action="'+location+'" method="POST">'+form+'</form>').appendTo('body').submit();基于此答案的想法
2021-04-29 00:18:35
尝试使用它时,我得到 $.redirectPost 不是函数错误。
2021-05-15 00:18:35
该解决方案比 imo 接受的答案要好得多。它易于实现,无需加载额外的库!
2021-05-17 00:18:35

为什么不创建一个带有一些隐藏输入的表单并使用 jQuery 提交它?应该管用 :)

不适用于拖放文件上传。出于安全原因,您不能分配文件输入。
2021-05-03 00:18:35
@mlt 我不确定为什么它不起作用。您没有为文件输入分配任何内容,但您使用与表单同时发布的其他输入隐藏字段。
2021-05-03 00:18:35
当您可能希望将用户重定向到某个地方并让他们上传具有相同请求的文件时,我想不出任何情况。但是当然 - 这是真的,在这种情况下它不起作用。
2021-05-13 00:18:35

在文档/窗口准备好之前,将“扩展”添加到 jQuery :

$.extend(
{
    redirectPost: function(location, args)
    {
        var form = '';
        $.each( args, function( key, value ) {

            form += '<input type="hidden" name="'+value.name+'" value="'+value.value+'">';
            form += '<input type="hidden" name="'+key+'" value="'+value.value+'">';
        });
        $('<form action="'+location+'" method="POST">'+form+'</form>').submit();
    }
});

利用 :

$.redirectPost("someurl.com", $("#SomeForm").serializeArray());

注意:此方法不能发布文件。

我认为这是最好的方法!

<html>
<body onload="document.getElementById('redirectForm').submit()">
<form id='redirectForm' method='POST' action='/done.html'>
<input type='hidden' name='status' value='complete'/>
<input type='hidden' name='id' value='0u812'/>
<input type='submit' value='Please Click Here To Continue'/>
</form>
</body>
</html>

这几乎是即时的,用户将看不到任何东西!