2011-07-14 15 views
2

json文字列をスクリプトタグに直接書き込むことはできますか?json文字列をスクリプトタグに直接書き込む

マイソリューション:

myJsonObject = jQuery.parseJSON(' *json string* '); 

stuffObject = myJsonObject.stuffObject; 
delete myJsonObject.stuffObject; 

someObject = myJsonObject.someObject; 
delete myJsonObject.someObject; 

しかし、私はそれが少し汚れていると思います。おそらく、より良い(より速い)ソリューションがありますか?

ありがとうございます!

答えて

1

すべてのJSONは有効なjavascriptです(ただし、逆の場合はありません)。

// These two lines are equivalent 
var someObject = { a: 'a', b: 'b' }; 
var someObject = jQuery.parseJSON('{ "a": "a", "b": "b" }'); 

あなたが外部リソースへの要求から、あなたのJSON文字列を取得している場合は、私が何を現在行っていることは、それを行うための最善の方法だと思います。

var $body = $(document.body); 
$body.append("<script type='text/javascript'>var myJsonObject = " + jsonString + ";</script>"); 

が、私は個人的にこれがクリーンに見えるとは思わないが、このアプローチにはいくつかの他の問題があります:あなたが本当に望んでいた場合は、そうのように、新しいscript要素にJSONを挿入することができます。ハッカーがあなたのサイトが戻ってきたJSONレスポンスに自分のjavascriptを入れることができたなら、その有害なjavascriptがあなたのサイトで実行され、潜在的にあなたのサイトに混乱を引き起こし、あなたを恥ずかしくします。

第2に、JavaScriptは(少なくともこの場合は)グローバル変数を作成し、現在実行中の関数と同じスコープで実行されません。

新しいscript要素を作成し、JSONを解析するたびにDOMに挿入するという不必要な費用はもちろんですが、

JSON文字列に有害なjavascriptがあると、解析エラーが発生します(JSONはデータのみを保持し、コマンドは実行できません)。2)現在のスコープ内のすべて。

+0

ありがとうございました! – Peter

+0

喜んで助ける;) – benekastah

関連する問題