我需要將一些數據發送到網頁,理想情況下使用json格式,並且我想知道哪種方法最好,以及爲什麼。總體而言,你與他們有什麼好的或不好的經歷和驚喜。在創建時將JSON發送到頁面的最佳方式
<script>var myJson = <? echo json_encode($myVar); ?>;</script>
優勢:JSON是直接在JavaScript中,是將使用它。
不方便:在html/dom中間的<script>
是壞的(js屬於 到.js文件)。<div data-myJson='<? echo json_encode($myVar); ?>'>
優勢:HTML5數據事情是容易的工作。
不方便: 在dom中的一堆數據,它看起來並不優雅注:在我的 的情況下,我可以承受忽略「舊」瀏覽器。ajax應有盡有。
優點:在這種情況下甚至不需要發送json,因爲它 已經可用(無頁面更改)。
不方便:不是 真的是一個選項,因爲我需要重寫整個網站。代替發送完整的json,將它存儲在會話中併發送一個 密鑰。
優點:少移動數據
不方便: 數據/會話情侶需要跟蹤,我喜歡我的會議保持乾淨整潔。 (即使用戶只是在流程完成前關閉該頁面)(不會關閉會話)。餅乾。
優點:herr ..是逆向邪惡的好東西嗎?
不方便:像會話變量,但出籠。在會話中存儲json,並在加載頁面時加載jjax。
優點:概念上有點高雅。
不方便:沉重,因爲ajax指令已將 添加到js文件中,並且必須管理該會話。 (和 已清理。如果頁面加載沒有完成,json將一直保留,直到我清理它或會話結束爲止 )。再加上html header意味着更多的帶寬,我們必須等待使用該對象的成功。- 其他?
編輯:因爲似乎有點混亂,有選擇3「阿賈克斯的一切」,我的意思一個頁面加載,並所有內容通過AJAX加載,即使你通過菜單,指向其他頁面的鏈接,表單提交等。我認爲更傳統的導航(由服務器作爲新頁面發送的頁面),頁面做一個ajax請求來檢索服務器上的某個值(這裏是我的json對象),作爲第4點「會話」,作爲主頁數據必須在頁面發送後由服務器保留,以便稍後由ajax請求獲取。我爲此添加了選項6。
第一個變體(I.E.函數調用,而不是變量賦值)很常用(例如:facebook),它屬於.js文件而非JSON。順便說一句,你不需要'JSON.parse'。 – Esailija
#1看起來有點難看,但我沒有看到爲什麼它不能解決問題的原因,當然,如果JSON對象在頁面的生命週期內不會改變的話。 – Blazemonger
谷歌在其谷歌加服務使用類似於您在自己的'變種OZ_initData'做(你可以看到,如果您查看網頁的源代碼),但數據是不完全的JSON,但不知何故類似於1號建議的東西。 – Nasreddine