【问题标题】:Caching getJSON response that populates select box缓存填充选择框的 getJSON 响应
【发布时间】:2017-10-25 09:13:19
【问题描述】:

我正在开发一个应该使用后台同步脱机工作的应用程序。这是一个患者登记网络应用程序。当您加载应用程序时,它会使用 getJSON jquery 方法进行休息调用,以从服务器获取位置列表并填充选择框。但是现在当应用离线时,REST调用明显失败,选择框显示为空,没有内容。如果不选择位置,就不可能创建患者。我希望能够缓存这些位置,以便当页面离线时,它将从缓存中加载位置并填充选择框,并且用户仍然可以在离线时注册患者。这是我通过 REST 从数据库加载位置的代码

$.getJSON("/openmrs/ws/rest/v1/location", function(result) {
      var locations = $("#identifierLocations");

      $.each(result.results, function() {
        locations.append($("<option />").val(this.uuid).text(this.display));
      });
});

我不是一个日常的 javascript 程序员。我只在绝对必要时使用它,所以我对此的经验非常有限。我已经查看了与缓存 ajax 响应相关的所有其他问题,但似乎没有一个可以解决我遇到的问题。

【问题讨论】:

  • 您是否能够传回第一次未修改的 304 的 HTTP 响应代码,这样浏览器即使在离线时仍可以获取缓存的有效负载?或者,尝试将有效负载存储在 cookie 或会话存储中,同时您可以在线访问 api,然后当它离线时,您可以从 cookie/会话存储中读取列表。
  • 当服务器无法访问时,浏览器不会使用缓存数据。您需要将信息保存在应用程序本地,并在您尝试拨打$.getJSON 并失败时检测错误。

标签: javascript jquery ajax rest caching


【解决方案1】:

您可以将 json 保存在会话存储或本地存储中。见https://developer.mozilla.org/en/docs/Web/API/Window/sessionStorage

【讨论】:

    猜你喜欢
    • 2018-04-09
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    相关资源
    最近更新 更多