2011-07-07 7 views
2

HTMLページにJavaScriptオブジェクト(JSON)を含める必要があります。
JSONは、ページHTMLがサーバー上でレンダリングされるのと同時にレンダリングされます。データはではなく、ではAJAX呼び出しで取得されます。 私はこれを行う2つの方法を考え、フィードバックと推奨事項を探しています。
とは何ですか? JavaScript(JSON)BLOBをページに渡すためのものですか?JavaScriptデータチャンク(JSON)をHTMLページに挿入

オプション1

HTML:

<script type='text/javascript'> 
    var model = { <JSON> }; 
</script> 

の.js:

function doSomething() { <use this.model here> } 

オプション2

HTML:

<script type='text/javascript'> 
    loadModel({<JSON>}); 
</script> 

(HTMLファイルの先頭に含まれる)の.js:

var model = null; 
function loadModel(model) { this.model = model; } 
function doSomething() { <use this.model here> } 

バリエーション HTMLでJSONなど 代わりに、JSONは、別の.jsファイルに格納することができます。そのようなコメントはありますか?

オプション1を使用すると、.jsファイルをページの下部に含めておくと、レンダリングが高速になります(良いことですが)。そのため、JavaScriptがページ上にモデルをレンダリングするため、これが問題になります。まだ.jsインクルードの場所に依存しないので、エラーが発生しにくくなります。
また、R#はモデルが初期化されていないことについて(合理的に)苦情を申し立てます。

オプション2のほうが良いと感じますが、詳細については、より詳細にカプセル化していますが、loadModelを呼び出す前に.jsを含める必要があります。

私は両方の方法を見て、やりましたが、どちらか一方の大きな利点が他のものに比べて気付きませんでした。

Serverプラットフォームは無関係でなければなりませんが、それはIIS 7.5/ASP.NET MVCは、3 /レイザー

+0

私はあなたのオプション1(JSONを制御し、セキュリティについて心配する必要はないと仮定します)と一緒に行きます。それは簡単に保つ。 – nnnnnn

答えて

0

オプション2を使用するとオーバーヘッドが若干増加します。あなたは関数呼び出しのオーバヘッドと余分な変数(あなたのパラメータ)を持っているので、割り当てられ、割り当てが解除されます。

あなたが言ったように、いずれの方法にも利点/短所はほとんどありません。

0

あなたはjQueryのを使用することはできますか?その後、HTMLにjavascriptを含めるのではなく、DOM readyイベントを使用することができます。

EDIT:

うーん、ページが生成されたとき、その場合には、あなたが隠し要素の内側にJSONを含めることができます。その後、DOM準備完了イベントの中で、jQueryを使用してページから読み込み、解析できます。

もう1つの方法として、HTML 5のデータ属性を使用し、それらのデータの1つにデータを含める方法があります。

私の場合は、おそらくちょうどajaxコールを使用します。なぜなら、それは簡単で、少し洗練されているからです。

+0

私はまだクライアント(ブラウザ)にデータを取得する必要があります。どのように私はDOM準備完了イベントを使用してデータをJavaScriptに渡すことができますか? –

+0

@ user93422:データはどこから来ていますか?ページのレンダリング後にデータをロードするためにajax呼び出しを実行しようとしていますか?私はここの流れにはっきりしていない。 – david

+0

ページが最初にサービスされるときに、サーバー上のHTMLとともにデータが生成されます。 AJAXではありません。このページの 'var model'の検索(ソースコード):http://wowreforge.com/US/Emerald Dream/Kaytey –