2011-07-07 29 views
2

我需要在HTML頁面中包含JavaScript對象(JSON)。
JSON同時呈現頁面HTML在服務器上呈現。數據是而不是使用AJAX調用檢索。 我可以想到兩種方式來做這件事,並尋找反饋和建議。
什麼是良好的做法用於傳遞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> 

的.js(包括在HTML文件的頂部):

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

變異 代替包括在JSON HTML的,JSON可以存儲在一個單獨的js文件。對此有何評論?

選項1可讓您在任何地方包含.js文件,並將其包含在頁面的底部使其渲染速度更快(好事),但由於JavaScript在頁面上呈現模型,因此這是一個有爭議的問題。仍然不依賴於.js包含的位置使得它更不容易出錯。
另外R#抱怨(合理)模型未初始化。

選項2感覺更好(它爲一個封裝細節更好),但在致電loadModel之前必須包含.js。

我已經看到並完成了這兩種方式,但沒有注意到一種方式比另一種顯着的優點。

服務器平臺應該是不相關的,但它是IIS 7.5/ASP.NET MVC 3 /剃刀

+0

我只想與您的選項1(假設您控制JSON並且不必擔心安全性)。保持簡單。 – nnnnnn

回答

0

選項二的開銷會稍微增加一點。因爲你有一個函數調用的開銷,以及一個額外的變量(你的參數),它將被分配和釋放。

正如你所說,任何一方面都沒有什麼優勢/劣勢。

0

你能使用jQuery?然後,您可以使用DOM準備事件,而不是在HTML中包含JavaScript。

編輯:

嗯,在這種情況下產生的頁面時,你可以包括JSON一個隱藏的元素裏面。然後在DOM ready事件中,您可以使用jQuery從頁面中讀取並解析它。

另一種選擇可能是使用HTML 5數據屬性並將數據包括在其中之一中。

如果是我,我可能只是使用ajax調用,因爲它更容易,看起來更乾淨。

+0

我仍然需要獲取數據到客戶端(瀏覽器)。我可以如何使用DOM ready事件將數據傳遞給javascript? –

+0

@ user93422:數據來自哪裏?你想在頁面渲染之後做一個ajax調用來加載數據嗎?我不清楚這裏的流量。 – david

+0

首次服務頁面時,數據與服務器上的HTML一起生成。不是AJAX。搜索(源代碼)'var model'在這個頁面上:http://wowreforge.com/US/Emerald Dream/Kaytey –