私は、バックグラウンド同期を使用してオフラインで作業するはずのアプリケーションで作業しています。それは患者登録ウェブアプリです。アプリケーションをロードすると、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レスポンスをキャッシュすることに関連する他のすべての質問を見てきましたが、私の持つ問題を解決することはできません。
HTTPレスポンスコード304を初めて渡すことはできません。そのため、オフラインでもブラウザがキャッシュされたペイロードを取得できるようになりますか?または、ペイロードをクッキーまたはセッションストレージに保存して、オンラインでアクセスすることができます。オフラインの場合は、Cookie /セッションストレージからリストを読み取ることができます。 – Woodrow
サーバーが到達不能な場合、ブラウザはキャッシュされたデータを使用しません。情報をローカルにアプリケーションに保存し、 '$ .getJSON'呼び出しを試みるとエラーを検出する必要があり、失敗します。 – Barmar