2012-11-12 29 views
0

我有一个页面,底部有一个表单。我在表单动作中使用了片段标识符,因为当出现错误时,表单会重新显示在帖子上,而我不希望用户必须向下滚动才能更正。删除302重定向上的片段标识符

当窗体成功处理后,我执行重定向到同一页面并显示确认消息。我遇到的问题是浏览器preserves the fragment identifier upon 302 redirects。有没有办法强制浏览器清除/删除片段标识符?


假设我正在查看用户个人资料页面,并且在页面上有地址表单。表单操作将是/user/profile#AddressForm。如果表单提交时发生错误,页面会自动滚动到地址表单中,以便用户更正错误。如果没有错误,我想重定向到/user/profile,它没有片段标识符。我遇到的问题是浏览器保留片段标识符,并且页面向下滚动到表单,而不是停留在顶部。

回答

1

更新

现在,我看到的是实际的问题,我建议重定向到不存在的锚

header ('Location: /user/profile#top'); 

有。

$form->setAction ($this->getRequest()->getRequestUri()); 
+0

我不认为你理解这个问题。我没有设置表单“操作”的问题。之后我做了一个重定向的问题,因为浏览器保留了片段标识符,我希望它消失。 – Sonny

+0

我想我是。只有在未设置动作属性时,浏览器才会保留片段标识符。如果明确设置了操作,则不会。 – akond

+0

我总是设置动作。无论哪种方式,我都是在发布后进行重定向,因此表单操作不再是一个因素。 – Sonny