2

很抱歉标题不稳定,很难描述这个问题。另外,很抱歉,如果这是重复的,则很难搜索。

我正在尝试使用 JQuery 在按下按钮时实现一个相对简单的 AJAX 调用。我的目标是有一个按钮,上面写着“添加到列表”或“从列表中删除”,当按下时,对服务器进行 AJAX 调用,从列表中适当地添加/删除项目。成功后,按钮将被 JQuery 更改以反映后端的更改(因此从添加到 -> 删除,反之亦然)。

即使用户没有启用 Javascript(这是个好主意,对吗?),我也希望它能够工作,所以我的按钮位于标准 html 表单中,该表单可以进行 POST 调用,执行 DB 内容,然后重定向用户访问他们刚刚访问的网页。我用 JQuery 覆盖了这个默认行为。

为了在用户第一次加载页面时显示正确的按钮类型,以及当他们在启用 Javascript 的情况下执行标准 POST 调用时,我使用 Django 的模板系统在表单中显示正确的按钮/隐藏值。

这一切都很好,很好......在大多数情况下。我遇到的问题是当用户使用 Javascript 单击按钮,然后转到另一个页面,然后使用页面后退按钮返回页面时,更改不会保留。也就是说,按钮显示为 Django 在第一个页面加载时呈现的。如果用户重新加载页面,则此问题已修复。

当然,这会让用户感到非常困惑,因为按钮不能正确反映数据库的状态。我怎样才能解决这个问题?

4

1 回答 1

2

不幸的是,这个问题没有真正好的答案。后退按钮通常会返回到用户浏览器上缓存的页面版本,并且与许多形式的动态内容的交互很差。您可能会考虑尝试说服您的用户不要使用后退按钮(通过强大的导航栏或他们可以使用的等效功能更容易)或添加有用的注释。您还可以输入各种元标记来告诉浏览器不要缓存页面(从而导致它们每次都完全加载它),但这会减慢速度,并且可能并非所有浏览器都遵循。

于 2013-07-11T19:58:19.273 回答