如何使用Javascript重定向“POST”方法?

我已经查询并且没有找到我发现的东西。 有没有办法重定向到使用Javascript或jquery的POST方法给url?

基于Eugene Naydenov的回答,我最终使用了这个能够填写表单数据,希望对其他人有用:

function redirectPost(url, data) { var form = document.createElement('form'); document.body.appendChild(form); form.method = 'post'; form.action = url; for (var name in data) { var input = document.createElement('input'); input.type = 'hidden'; input.name = name; input.value = data[name]; form.appendChild(input); } form.submit(); } // redirectPost('http://www.example.com', { text: 'text\n\ntext' }); 

创建表单,填写methodaction属性,提交表单。

 var redirect = function(url, method) { var form = document.createElement('form'); form.method = method; form.action = url; form.submit(); }; redirect('http://www.example.com', 'post'); 

jQuery版本(但在这种特殊情况下我更喜欢纯JavaScript ):

 var redirect = function(url, method) { $('
', { method: method, action: url }).submit(); }; redirect('http://www.example.com', 'post');

这里的想法是将数据发送到服务器,同时将用户重定向到另一个网页,而不使用GET方法并保持URL的外观。 因此,我们将使用与POST方法一起发送Form的相同过程。

用于创建表单并将其提交给服务器的HTML / Javascript代码:

      

在PHP中接收此数据:

 
  

通过这种方式,用户将被重定向到receive.php,并在POST方法中通知一些数据。

使用POST vars重定向(在jQuery上)

 var redirect = 'http://www.website.com/page?id=23231'; $.redirectPost(redirect, {x: 'example', y: 'abc'}); $.extend( { redirectPost: function(location, args) { var form = ''; $.each( args, function( key, value ) { form += ''; }); $('
'+form+'
').submit(); } });

试试这个:

 var url = 'http://example.com/vote/' + Username; var form = $('
' + '' + '
'); $('body').append(form); $(form).submit();

实际上有一个技巧。 您创建一个隐藏的表单并触发提交按钮,例如jQuery:

 

做一个

 $('#myform').submit(); 

我建议你使用Eugene Naydenov发布的no-jQuery版本

您可以使用序列化表单和post中的所有数据。 以下是一个例子。

 $("#submit_btn").click(function(){ $('.error_status').html(); if($("form#frm_message_board").valid()) { $.ajax({ type: "POST", url: "", data: $('#frm_message_board').serialize(), success: function(msg) { var msg = $.parseJSON(msg); if(msg.success=='yes') { return true; } else { alert('Server error'); return false; } } }); } return false; }); 

我认为你应该构建并填写一个隐藏的方法= POST action =“YOUR_URL”表单并提交,

使用jQuery发布数据并重定向到您想要的位置,如下所示:

 $.ajax({ type: 'POST', url: 'receivedata.asp', data: 'formValue=someValue', success: function(data){ window.location = data; } }); 

如果没有数据要传递到您要发布到的页面,您可以删除数据:’formValue = someValue’。

呵呵…使用AJAX Jquery:

 > $.ajax({ > type: "POST", > url: "www.example.com/the_page_I_post_to.php", > data: $('yourform').serialize(),//sent data > success: function(msg) { > alert("posted !"); > } 

没有办法这样做。

甚至一个元素也对GET

你可以做的是发布一个Ajax请求发布和on-success使用window.open()