2011-02-03 10 views
1

私はjQuery.ajaxを使用してXMLデータのXMLHttpRequestを作成するSafari拡張を作成しています。プロセスデータ関数でconsole.log(data)を実行すると、トラバースできるアイテムDocumentが取得されます。XMLHttpRequestデータをlocalStorageに格納することはできますか?

このajaxデータをlocalStorageに保存します。だから私はこれを持ってprocessDocument機能の最初の数行に:

function processResponse(data) { 
    localStorage.removeItem("myData"); 
    localStorage.setItem("myData", data); 
    console.log('post-load: there are ' + localStorage.length + ' items in the local storage array.'); 
    console.log("post-load data: " + data); 
    console.log("post-load myData: " + localStorage.myData); 

にconsole.logは私が表示されます:
後負荷:ローカルストレージアレイ内の1つの項目があります。
ポストロードデータ:[オブジェクトドキュメント]
ポストロードmyData:[オブジェクトドキュメント]

ここに有効なデータがあるようです。それはまた、ツールバーのボタンにポーリングを応答する場合でも、MessageHandlerの機能は、このようなローカルストレージ:

console.log('There are ' + localStorage.length + ' items in the local storage array.'); 
for (var x = 0; x < localStorage.length; x++) { 
    console.log(x + ": " + localStorage[x]); 
} 
if (localStorage.myData == undefined) { 
    console.log("myData is undefined"); 
    doSomething(); 
} else { 
    console.log("myData is defined"); 
    doSomethingElse(); 
} 

は、ここでは、コンソールログが表示されます:
ローカルストレージアレイ内の1つの項目があります。
0:未定義
MYDATAが

を定義しているが、私はきちんとのlocalStorageで、このXMLデータを格納するために行う必要がある何かがありますか? localStorageはこのオブジェクトの整合性を保持すべきではありませんか?多分私はここに何かを見逃しています。

答えて

1

あなたの最初のデバッグ出力があなたに伝えているように見えますが、ローカルストレージは文字列を格納するオブジェクトを格納しません。 XMLを元に戻すには、それを文字列として格納し、文字列をXMLに戻して解析する必要があります。 This answer describes one approachの場合は、XMLに合わせて具体的に調整する必要があります。

+0

まあ、私はJSON.stringifyを見て、それは私が行っている方向のように見えます。普通の古いXMLのような獣はありますか? – gdanko

+0

var string =(新しいXMLSerializer())。serializeToString(data); – gdanko

+0

@ user589254 XML解析は、他のほとんどのブラウザと比較してIEで非常に異なって動作するものの1つです(http://www.mikechambers.com/blog/2006/01/09/parsing-xml-in-javascript/)。 )、あなたは軽量なAJAXライブラリのいくつかを調べたいかもしれません。 – robertc

関連する問題