基本上我想做的是当我改变窗口时发送POST数据。位置,就好像用户提交了一个表单,然后它转到了一个新页面。我需要这样做,因为我需要传递一个隐藏的URL,我不能简单地将它作为一个GET放在URL中。

这是我目前拥有的,但它不发送任何POST数据。

if(user has not voted) {

    window.location = 'http://example.com/vote/' + Username;

}

我知道你可以用jQuery.post()发送POST数据,但我需要它与新的window.location一起发送。

因此,概括一下,我需要通过POST将api_url值发送到http://example.com/vote/,同时将用户发送到同一页面。


为了便于将来参考,我最后做了以下工作:

if(user has not voted) {

    $('#inset_form').html('<form action="http://example.com/vote/' + Username + '" name="vote" method="post" style="display:none;"><input type="text" name="api_url" value="' + Return_URL + '" /></form>');

    document.forms['vote'].submit();

}

当前回答

下面是一个不使用jQuery的方法。 我用它创建了一个bookmarklet,它在w3-html-validator上检查当前页面。

var f = document.createElement('form');
f.action='http://validator.w3.org/check';
f.method='POST';
f.target='_blank';

var i=document.createElement('input');
i.type='hidden';
i.name='fragment';
i.value='<!DOCTYPE html>'+document.documentElement.outerHTML;
f.appendChild(i);

document.body.appendChild(f);
f.submit();

其他回答

这里有一个简单的小函数,只要你使用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 ) {
            value = value.split('"').join('\"')
            form += '<input type="hidden" name="'+key+'" value="'+value+'">';
        });
        $('<form action="' + location + '" method="POST">' + form + '</form>').appendTo($(document.body)).submit();
    }
});

使用起来非常方便:

var myRedirect = function(redirectUrl, arg, value) {
  var form = $('<form action="' + redirectUrl + '" method="post">' +
  '<input type="hidden" name="'+ arg +'" value="' + value + '"></input>' + '</form>');
  $('body').append(form);
  $(form).submit();
};

然后这样使用它:

myRedirect("/yourRedirectingUrl", "arg", "argValue");

没有解决方案。1

 //your variable
    var data = "brightcherry";

    //passing the variable into the window.location URL
    window.location.replace("/newpage/page.php?id='"+product_id+"'");

没有解决方案。2

//your variable
var data = "brightcherry";

//passing the variable into the window.location URL
window.location.replace("/newpage/page.php?id=" + product_id);

细节

构造并填写一个隐藏的method=POST action="http://example.com/vote"表单并提交它,而不是使用window。位置。

如果你正在使用jQuery,有一个重定向插件与POST或GET方法一起工作。它创建一个带有隐藏输入的表单并为您提交它。如何让它工作的例子:

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

注意:您可以将方法类型GET或POST作为可选的第三个参数传递;POST是默认值。