2010-01-06 103 views
2

我一直在大量使用XMLHttpRequests和JSON從MySQL數據庫中獲取數據,並將記錄作爲數組返回。它完美的作品。我有三種情況,我有服務器(通過PHP)將數據格式化爲網頁並創建條形圖(而不是將數組發送回JavaScript進行處理)。目前,我通過隱藏的iframe調用PHP文件,然後將HTML插入到DIV中(因爲我不喜歡iframe的某些方面並且更喜歡不讓它們可訪問)。我應該使用XMLHttpRequest/JSON還是iFrame?

使用iframe是最好的方法還是我可以通過XMLHttpRequest和JSON完成同樣的事情?我問的是因爲返回的數據的長度。目前,它翻譯成一整頁數據,但我希望它是可擴展的(例如,將來可能有幾頁數據)。

謝謝你的任何見解。

+0

我不明白爲什麼你需要IFrame從PHP獲取格式化的Html? – 2010-01-06 08:30:27

+0

嘗試了iframe的轉換時,我使用了幾年(在最新的JS之前)隱藏HTML幀和獲取數據的技術。不知道JQ-Load,我仍然習慣於語法。另外,在使用JQuery時偶爾遇到瀏覽器兼容性問題。也許這仍然是我的學習曲線,但是,例如,我根據您的答案使用了JQuery加載。它在Chrome和Safari中完美運行,但在Firefox中產生了錯誤消息。這就是爲什麼我花了很長時間才轉換舊的方式。大多數舊方法仍然無處不在。 – 2010-01-07 16:24:43

回答

2

如果你想從其他頁面獲取格式化的html,並將其插入當前頁面dom根據我最簡單的方法是使用jQuery load methods。它對給定的url進行ajax請求,獲取html並將其附加到指定的頁面元素。

通常這兩種方法 - 傳遞JSON數據和傳遞Formatted html對於不同的事情都是很好的。我個人更喜歡傳遞JSON數據並用客戶端腳本和html格式化。這樣它更加可重用。

+0

正確,jquery可以做同樣的事情,但關心的是,數據長度不能縮短。數據只能在PHP響應部分內容的時候減少,也就是說,無論如何需要PHP中的一些代碼改變。 – joetsuihk 2010-01-06 08:41:28

+0

你可以隨時Gzip和/或緩存數據,如果它是相當靜態的,所以長度不會是我想的那麼多問題。 – 2010-01-06 09:24:00

+0

謝謝Branislav(還有Joel提供的大小提醒)。我會給JQuery一個嘗試。 您的意見,關於傾向於傳遞JSON數據,用於客戶端格式化,與我一直想知道的(避免)一致:在JavaScript中重寫我的PHP函數。最初的代碼以JavaScript開始,然後在更復雜(更復雜)之前切換到PHP。 我切換,因爲客戶端設備可能是智能手機,我不想依賴它的處理能力。但是,在我的代碼中使用單一方法(JSON)會很好。 – 2010-01-06 16:13:01