2011-07-07 52 views
0

我是一名自由職業的Web開發人員,而且我總是面臨同樣的問題。應該如何填充從數據庫中提取的需要GUI表示的表或任何其他數據?使用數據庫響應填充表的一般方法

選項包括:

  1. 服務器將返回所有的GUI和數據。嵌入HTML代碼。
  2. 服務器返回XML/JSON數據,並用內部javascript填充它?即var gui = "<h1>" + data.title + "</h1">; $("myTitle").html(gui);
  3. 服務器內嵌有模板返回XML/JSON數據? {"title":"Hello!"..some other data....., {["<h1>%d</h1>], ["<a href='#'...]}"
  4. 頁,使數據請求中包含模板在一個隱藏的DIV,填充數據?
  5. 或者我可能不知道的其他方式?

回答

1

簡單的答案:#2。

更復雜的答案:#5

在覈心,演示文稿需要從你的服務器端處理分開。簡單的場景,你只需要做一次顯示,發回JSON並將其填充到客戶端。關鍵在於:我如何重用這種顯示邏輯?或者,如果我的顯示邏輯取決於JSON返回並且我的JavaScript變得渾濁和嚴重,該怎麼辦?如果我想要返回兩種截然不同的東西中的一種,並且不想讓我的JavaScript超級複雜?

嗯,這就是當你需要把它一步拆分你的渲染場景。這是當你可以擁有shell頁面,控件,視圖或你給框架提供的任何東西的時候。您的目標是使用服務器端編程邏輯來填充該視圖/控件,將其呈現在服務器端,然後將整個HTML塊返回給JavaScript AJAX調用。然後可以直接加載這個大塊,而不需要任何額外的腳本。

有權衡!不要使用該時:

  1. 你的數據和顯示是直線前進
  2. 你用這塊單一時間
  3. 你渲染視圖是巨大的。請記住,你是通過電線傳遞的。在JavaScript中循環數據,構建單元格可能比一次傳回表格的所有文本要快。

確實使用時這種渲染技術:

  1. 你傳回高度可變的內容。
  2. 顯示邏輯複雜而且可變。
  3. 您的顯示邏輯取決於您不希望客戶知道/關心的某些數據。

所以,你的#1的目標:從你的服務器端代碼中分離出來的呈現邏輯。永遠不要把你的HTML放在你的代碼隱藏中,但是如果可以的話,你可以考慮渲染頁面代碼片段,並通過網絡傳回所有的HTML,讓服務器生成HTML,而不是JavaScript。

2

我 - 絕對選項#2。
服務器不應該意識到頁面顯示數據的確切方式。
您可以將其視爲'問題分離'問題:服務器關心的是檢索請求的數據,就是這樣。
客戶端有責任以任何方式呈現數據。

如果您曾經想改變數據呈現方式,那麼在使用您提及的其他方法時,您必須更改服務器端邏輯。

選項#2,甚至讓你不改變你的服務器端徹底改變您的客戶端類型(WPF/WinForm的/不管客戶端)的理論上的可能性。

p.s.作爲一個便箋 - 檢查jqgrid爲一個真棒表插件。

相關問題