【发布时间】: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