基本上,我想做的是在更改window.location
时发送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();
}
发布于 2011-12-06 02:42:01
构造和填写一个隐藏的method=POST action="http://example.com/vote"
表单并提交它,而不是使用window.location
。
发布于 2012-04-05 10:58:51
根据@Kevin-Reid的回答,这里是“我最终完成了以下操作”示例的替代方案,该示例通过专门构造表单(使用jQuery)来避免再次命名和查找表单对象。
var url = 'http://example.com/vote/' + Username;
var form = $('<form action="' + url + '" method="post">' +
'<input type="text" name="api_url" value="' + Return_URL + '" />' +
'</form>');
$('body').append(form);
form.submit();
发布于 2014-04-29 01:43:04
这里有一个简单的小函数,只要您使用的是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();
}
});
https://stackoverflow.com/questions/8389646
复制相似问题