在发布HTML表单后,是否有重定向用户?
我有一个看起来像这样的表格
<form action="/URL/" method="post">
<input type="radio" name="answer" value="W" />W<br />
<input type="radio" name="answer" value="X" />X<br />
<input type="radio" name="answer" value="Y" />Y<br />
<input type="radio" name="answer" value="Z" />Z<br />
<input type="submit" />
</form>
我是否可以在点击提交按钮后将用户重定向到新页面?我找到了一些javascript但是这似乎阻止了帖子的工作:S
干杯!
答案 0 :(得分:6)
如果您使用的是PHP,请在服务器上执行:
if( isset( $_POST['answer'])) {
header( 'Location: http://www.example.com/newurl');
exit();
}
请注意,您应该在header()
来电中使用完整网址,并且在这种情况下,您可能希望exit()
致电header()
。
答案 1 :(得分:2)
您可以使用简单的php header('yourlocation.php');
将其从表单移开。
即使您的header()位于php文件的顶部,您的表单操作指向的PHP仍将继续执行。
标题重定向将负责用户点击刷新 - 它已经将它们移动到发送表单数据的位置,因此即使它们刷新,它也只会在没有任何表单提交的情况下再次打开页面。
一个例子是fololows:
<?php
/* This will give an error. Note the output
* above, which is before the header() call */
// Process Form Data, insert to database, whatever you want... then
header('Location: http://www.example.com/');
?>
然后,用户最终会访问wwww.example.com,他们可以根据自己的喜好进行垃圾邮件刷新,但所有处理工作都已完成。它不会重新发送信息(或再次处理其付款或其他任何内容)。
答案 2 :(得分:2)
是的,请使用重定向标头:
header("Location: http://new.location.com/w00t");
必须在发送任何输出之前调用它。
请注意,在标题调用之后仍然会被执行!因此,您之后需要die()
或exit()
以防止意外结果。
答案 3 :(得分:1)
您只需指定提交后表格的网址即可。
<form action="http://localhost/redirected.php" method="post">
您可以使用PHP查看表单是否已提交,然后重定向:
if (isset($_POST['answer']))
header('Location: redirect.php');
你可以用javascript / jquery实现这个目的。
$('#submit_button').click(function () {
// do everything with variables
window.location = 'redirect.php';
});
答案 4 :(得分:0)
是的,只需使用ajax发布数据,然后使用window.location = 'http://xxxx.com'
将用户重定向到您选择的位置。
这假设你想要在不使用服务器端位置标题的情况下重定向用户(就像发布的其他标题一样)。