Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确保当用户返回页面而不刷新时,javascript更改的元素保持更改状态_Javascript_Jquery_Django - Fatal编程技术网

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

确保当用户返回页面而不刷新时,javascript更改的元素保持更改状态,javascript,jquery,django,Javascript,Jquery,Django,很抱歉标题不可靠,我很难描述这个问题。此外,很抱歉,如果这是重复的,很难搜索 我正在尝试使用JQuery在按下按钮时实现一个相对简单的AJAX调用。我的目标是有一个按钮,上面写着“添加到列表”或“从列表中删除”,按下时,向服务器发出AJAX调用,适当地从列表中添加/删除项目。成功后,JQuery将更改按钮以反映后端的更改(从添加到->从中删除,反之亦然) 即使用户没有启用Javascript(这是个好主意,对吧?),我也希望这样做。因此,我的按钮位于一个标准html表单中,可以进行POST调用,

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

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

即使用户没有启用Javascript(这是个好主意,对吧?),我也希望这样做。因此,我的按钮位于一个标准html表单中,可以进行POST调用,执行DB操作,然后将用户重定向到他们刚刚打开的网页。我用JQuery覆盖了这个默认行为

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

这一切都很好。。。大部分情况下。我遇到的问题是,当用户使用Javascript单击按钮,然后转到另一个页面,然后使用page back按钮返回页面时,更改不会保留。也就是说,按钮在第一次页面加载时由Django呈现。如果用户重新加载页面,这是固定的


当然,这对于用户来说非常混乱,因为按钮不能正确反映数据库的状态。我如何解决这个问题?

不幸的是,这个问题没有真正好的答案。“后退”按钮通常会返回到缓存在用户浏览器上的页面版本,并且与许多形式的动态内容交互效果不佳。你可以试着说服你的用户不要使用后退按钮(通过一个强大的导航栏或者他们可以使用的等价物做得更容易)或者提供有用的注释。您还可以输入各种元标记,告诉浏览器不要缓存页面(从而导致他们每次都完全加载页面),但这会降低速度,而且可能不是所有浏览器都会遵循它。

当javascript被禁用时,您将如何进行ajax调用?@chrisvillanueva他说,当javascript被禁用时,他使用POST和服务器端代码。很抱歉出现了巨大的延迟。谢谢你的回答,这促使我自己进行更长时间的搜索。不幸的是,你似乎是对的。对于那些在将来关注这个问题的人:还有一些与页面状态相关的事情可以使用location.hash来完成。不幸的是,不适用于我的网站。