1

HTML5 ローカル ストレージを使用して多数のサイトの詳細を保存しようとしていますが、ちょっとした壁にぶつかりました。

基本的に、私はアプリケーションがデータをオフラインでキャッシュできるようにしたいと考えています。私が開発してきた方法では、メイン ページが読み込まれるたびにコンテンツが localStorage.sitedata としてキャッシュされます。JSONとして保存しています。

私が書いたコードは次のようになります。

            // Retrieve response as JSON
            response = $.parseJSON(data);

            // Store the data in HTML5 local storage as well
            var dataToCacheArray = new Array();
            for(var item in response){
                var obj = response[item];
                dataToCacheArray.push(obj);
            }
            var dataToCache = JSON.stringify(dataToCacheArray);
            localStorage.sitedata = dataToCache;

これで、dataToCacheArray のデータはまさに私が求めているものになりました。これは、多数の JavaScript オブジェクトを含む配列です。console.log() を使用して dataToCacheArray を表示すると、Chrome の開発者ツールに表示されるように、そのうちの 1 つを次に示します。

lastChecked: "13:46:55 Wednesday 15 August 2012"
siteId: "34"
status: "1"
success: "1"
url: "http://localhost"

その後、dataToCacheArray の文字列化されたバージョンを dataToCache として保存し、それを console.log() で表示すると、次のようになります。

[{"status":"1","success":"1","siteId":"34","lastChecked":"13:46:55 Wednesday 15 August 2012"}]

ご覧のとおり、何らかの理由で URL が文字列化されたバージョンに含まれていません。私がどこで失敗したかについて何か考えはありますか?

4

1 に答える 1

2

URL を encodeURIComponent(url) に設定して、JSON にシリアル化する前に元のデータで適切にエスケープされるようにします。

于 2012-08-15T13:19:10.790 に答える