javascript - 确保当用户返回页面而不刷新时,由 javascript 更改的元素保持更改

标签 javascript jquery django

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

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

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

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

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

这当然会让用户感到非常困惑,因为该按钮不能正确反射(reflect)数据库的状态。我该如何解决这个问题?

最佳答案

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

关于javascript - 确保当用户返回页面而不刷新时,由 javascript 更改的元素保持更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17599403/

相关文章:

javascript - 与 Prettier 的不一致

javascript - 仅比较日期中的时间 - javascript

javascript - 使用 three.js 的颜色选择器中的十六进制值作为字符串

javascript - 如何与 php 共享 javascript var?

javascript - jQuery 悬停函数 IE 错误

Django csrf token

javascript - 旋转自定义图像作为下拉菜单中的箭头

javascript - DatePicker 功能不起作用

javascript - 将 JSON 列表从 Javascript 发送到 Django 后端并正确解析它

python - 快速检查远程 URL 上的图像是否存在于 python 中