2017-05-24 67 views
0

我正在處理一個應用程序,該應用程序應該使用後臺同步進行脫機工作。這是一個耐心註冊的網絡應用程序。當你加載應用程序時,它會使用getJSON jquery方法從服務器獲取位置列表並進行選擇框的填充。但是現在,當應用程序處於脫機狀態時,REST調用顯然會失敗,並且選擇框顯示爲空且沒有內容。沒有選擇地點就無法創建病人。我希望能夠緩存位置,以便在頁面脫機時,它將從緩存中加載位置並填充選擇框,並且用戶在離線狀態下仍可以註冊患者。下面是通過REST緩存getJSON響應,填充選擇框

$.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響應有關的其他問題,但其中沒有一個似乎解決了我遇到的問題。

+0

您是否能夠傳回第一次未修改的304響應代碼,這樣瀏覽器即使在脫機時仍可以抓取緩存的有效內容?或者,嘗試將有效載荷存儲在cookie或會話存儲中,同時可以聯機訪問api,然後在脫機時可以從cookie /會話存儲中讀取列表。 – Woodrow

+1

服務器無法訪問時,瀏覽器不會使用緩存的數據。您需要將信息保存在本地應用程序中,並在嘗試執行'$ .getJSON'調用時檢測到錯誤並且失敗。 – Barmar

回答