2011-11-14 4 views
2

申し訳ありませんがタイトルが何らかの誤解がある場合。 jsonを使用してlocalstorageから値を解析しようとしたときにWebアプリケーションに問題が発生しましたが、値がない場合は何も動作しません。例えばLocalstorage&JSON.parse:値が指定されていない場合、JSは機能しなくなりますか?

あなたがこれを行う場合:alert(localStorage.getItem("something"));あなたがnullを取得:http://jsfiddle.net/yrGht/

ますが、このことをブロックし、すべて行う場合:alert(JSON.parse(localStorage["test"]));あなたが何を取得し、それが作業からすべてを停止します。http://jsfiddle.net/7tCaS/

これを解決して最初に警告し、値がない場合は基本的にこれを設定したいので、JSON.parse(localStorage["test"])をグローバル変数として扱いますが、それ以外はすべてブロックします:http://jsfiddle.net/gq9Ea/

答えて

5

これを試してみてください:JSON.parse(undefined_variable)は "無効な文字" エラーを与えるので、それが失敗した

alert(JSON.parse(localStorage['test'] || null)); 

理由があります。 localStorage['test']が存在しない場合はundefinedなので、エラーになります。上記のコードでは、値がfalsyの場合はnullとなります(undefined)。しかし、値が0,""または別の偽値の場合、これは悪影響を及ぼします。より具体的なコードが必要な場合は、試してみてください。

alert(JSON.parse(typeof localStorage['test'] == "undefined" ? null : localStorage['test'])); 
2

のlocalStorageを使用するときは、データが存在しないかもしれないし、あなたがその条件をテストし、何らかの方法でそれを処理する必要があることを、あなたのコードで予期する必要があります。

var parsedData; 
try { 
    parsedData = JSON.parse(localStorage.getItem("something")); 
} catch(e) { 
    parsedData = {}; // set default value if localStorage parsing failed 
} 

また、ブラウザのエラーコンソールにJavaScriptのエラーを確認する方法を学ぶ必要があります:あなたはまた、例外処理を使用することができ

var rawData = localStorage.getItem("something"); 
var parsedData = {}; // set whatever the default value should be if there is no localStorage value 
if (rawData) { 
    parsedData = JSON.parse(rawData); 
} 

:最も簡単な方法は、それがこのようなものになるだろう行うにはまたはデバッガコンソールを開きます。 Javascriptは「ブロック」されていませんでした。それは処理されなかったエラーを投げたので、執行は中止された。そのエラー(行番号とエラーのタイプの両方)は、エラーコンソールとデバッガコンソールの両方に記録されていました。

+0

ありがとうございます。私はコーディングが少ないので、kolinkの答えが好きで、私が探しているものとまったく同じです。私はすでにfirebugとchromeの開発ツールを使ってデバッグを行っていますが、解決策を見つけることができませんでした。どうもありがとう – jQuerybeast

関連する問題