对于这个糟糕的头衔感到抱歉,很难描述这个问题。此外,对不起,如果这是重复的,很难搜索。
我正在尝试使用JQuery在按钮按下时实现相对简单的AJAX调用。我的目标是有一个按钮,可以显示“添加到列表”或“从列表中删除”,按下时,会向服务器发出AJAX调用,从而适当地添加/删除列表中的项目。成功时,按钮被更改以反映后端的更改(因此,从Add添加到>从中删除,反之亦然)。
即使用户没有启用Javascript,我也希望这个能够工作(这是一个好主意,对吧?)所以我的按钮是在一个标准的html表单中进行POST调用,是DB的东西,然后将用户重定向到他们刚刚访问的网页。我用JQuery覆盖了这个默认行为。
为了在用户首次加载页面时显示正确的按钮类型,以及在启用Javascript时进行标准POST调用时,我使用Django的模板系统在表单中显示正确的按钮/隐藏值。
这一切都运作得很好......在大多数情况下。我遇到的问题是当用户使用Javascript单击按钮,然后转到另一个页面,然后使用页面返回按钮返回页面时,不会保留更改。也就是说,按钮显示为Django在第一页加载时呈现的按钮。如果用户重新加载页面,则会修复此问题。
当然,这对用户来说非常混乱,因为按钮没有正确反映数据库的状态。我该如何解决这个问题?
答案 0 :(得分:2)
不幸的是,这个没有真正好的答案。后退按钮通常返回到用户浏览器上缓存的页面版本,并且与许多形式的动态内容交互不良。您可能会考虑尝试说服您的用户不要使用后退按钮(通过强大的导航栏或他们可以使用的等效导航栏更容易)或添加有用的注释。还有各种各样的元数据可以告诉浏览器不要缓存页面(从而导致它们每次都完全加载它),但这会降低速度,并且可能不会被所有浏览器所遵循。