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