何时使用AJAX并避免刷新/重新加载页面问题

时间:2013-02-25 05:06:01

标签: ajax refresh reload

我很享受学习AJAX的经验,但我正在阅读有关何时实际使用它的混合评论的文章。

我的问题是 - 如果一个人刷新页面,你会怎么做?我丢失了所有处理和返回的ajax信息,并放入div和span占位符。

你如何保持这种状态或ajax电话或全部重置?也许我不应该在登录页面上执行ajax,或者有没有办法在没有设置大量cookie的情况下保留设置?

我有代码但是它非常适合窗口,我觉得最好问一下是否有这样的方法来保存所有的ajax工作或者是否必须通过重新加载来消除它?

3 个答案:

答案 0 :(得分:2)

您可以查看使用location.hashhtml5 pushstate来保持数据之间的刷新。

HTML5推送状态会更改浏览器位置栏中的URL,而无需重新加载整个新页面。这使得你可以给每个阶段或说明它自己的固定链接,但是老浏览器不支持它。

Location.hash执行相同的操作,但更改了URL的哈希值,例如http://server.com/location#hash,然后您可以使用各种库来读取此哈希值并更改页面。这具有与旧版浏览器兼容的优点。

http://benalman.com/code/projects/jquery-hashchange/docs/files/jquery-ba-hashchange-js.html

答案 1 :(得分:1)

除了重置整个应用程序状态之外,我见过的大多数AJAX应用程序都不处理页面刷新。尝试使用雅虎或大多数网站。

后退和前进点击也会造成严重破坏(尽管HTML5确实允许捕获这些事件)。 localStoragesessionStorage也可能有用。

通常,AJAX应用会尝试阻止带有弹出消息的操作来警告用户(例如:您确定要执行Dave吗?)

要从刷新中恢复,您可能希望在服务器上保存应用程序状态(如果有的话),并且只在cookie中保存指向会话ID的指针。

答案 2 :(得分:0)

正常重新加载。很明显,您在页面中获得的数据将被清除。如果你真的想存储一些东西,而不是在ajax调用的success function中制作一个cookie。

您还需要决定在哪里使用ajax。因为ajax的主要目的是使数据保持在同一页面上但不进行刷新。因为刷新旧数据将会消失。

我希望你得到答案。