【问题标题】:When to use AJAX and avoid the refresh / reload page issue [closed]何时使用 AJAX 并避免刷新/重新加载页面问题 [关闭]
【发布时间】:2013-02-10 05:06:40
【问题描述】:

我很享受学习 AJAX 的经历,但我收到的文章对何时实际使用它的评论褒贬不一。

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

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

我有代码,但它太适合放在窗口中了,我认为最好问问是否有这样一种方法可以保留所有 ajax 工作,或者是否必须通过重新加载将其清除?

【问题讨论】:

    标签: ajax refresh reload


    【解决方案1】:

    我见过的大多数 AJAX 应用程序除了重置整个应用程序状态之外不处理页面刷新。在 Yahoo 或大多数网站上尝试一下。

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

    通常,AJAX 应用程序会尝试通过弹出消息警告用户来阻止该操作(例如:Dave 你确定要这样做吗?)

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

    【讨论】:

    • 所以最好只将 AJAX 用于可能涉及大量下拉列表和即时计算数据的复杂表单...不一定是正确的简单登录?
    • 也许吧,尽管 AJAX 代码的编写方式也与后端服务器代码非常相似。您可以在顶部放置一个代码叉来检查登录状态。
    【解决方案2】:

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

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

    希望你能得到答案。

    【讨论】:

      【解决方案3】:

      您可以查看使用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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-25
        • 2018-01-06
        • 2021-01-20
        • 2010-10-06
        • 2014-04-30
        • 2021-12-15
        • 1970-01-01
        相关资源
        最近更新 更多