如何使用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' });
创建表单,填写method
和action
属性,提交表单。
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) { $('
这里的想法是将数据发送到服务器,同时将用户重定向到另一个网页,而不使用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 += ''; }); $('').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()
。