我正在向自己提交一个表单,并在页面中添加了一个锚点,这样当出现错误时,表单保证在视口中,这是一个简化的示例......
<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
所以我没有看到任何影响后续使用的内容?!?!
答案 0 :(得分:1)
锚点不会作为请求的一部分发送到服务器; PHP不知道它。您所看到的是客户端(浏览器)行为。我刚刚测试了其他HTTP响应(301,303,304),结果是一样的。
我建议使用JavaScript在发生错误时向下滚动到表单,而不是依赖于URL。