【发布时间】:2014-03-14 07:32:57
【问题描述】:
我正在向自己提交一个表单,并在 URL 中添加了一个锚点,这样当出现错误时,表单可以保证在视口中,这是一个简化的示例...
<form id="my_form" action="/form_link/#my_form" method="POST">
...
</form>
当/form_link/ 收到表单后,它会对其进行处理,当出现错误时,它会继续再次加载页面并显示错误。
但是,当帖子成功时,它会使用...重定向到不同的页面
header('Location: /another_link/');
die;
问题是当我最终到达重定向链接时,URL实际上是......
/another_link/#my_form
而不是预期的......
/another_link/
我很茫然,锚是在事后添加的,所以我没有什么可以剥离的。如何防止这种行为?
编辑: 原因可能是因为在表单提交和重定向之间尚未向浏览器输出任何内容?无论如何要清除标题中维护锚目标的任何内容?
编辑 2:headers_sent() 报告的已发送标头是:
[0] => X-Powered-By: ZendServer 6.3.0
[1] => Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/
[2] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
[3] => Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
[4] => Pragma: no-cache
[5] => Access-Control-Allow-Origin: **REMOVED**
[6] => Access-Control-Allow-Methods: GET, POST, OPTIONS
[7] => Access-Control-Allow-Headers: X-Requested-With
所以我没有看到任何会影响后续使用的东西?!?!
【问题讨论】:
-
只需将哈希值添加到位置 URL,这将产生如下内容:
/some_link/#。另一种方法是做一些 URL 重写规则。 -
@Poldas 最后尝试了空哈希
#,没有效果。而关于重写,不得不依靠apache为我做那种工作似乎很荒谬,我宁愿了解标题在哪里维护锚点。我有一种感觉,因为在重定向之前没有向浏览器输出任何内容。 -
@user1844933 对不起,我不知道这是指什么。
-
@oucil 您是否尝试过使用完整路径位置?是否有可能在第二次重定向之前发送标头?
-
@Poldas 我刚刚更新了有关已发送标头的详细信息的问题,没有运气
标签: php forms redirect header submit