[英]Issues in Ajax based applications
我對開發基於Ajax的應用程序非常感興趣。 這就是通過XMLHttpRequest加載應用程序的幾乎所有內容,而不僅僅是一些組合和窗口小部件。 但是,如果我嘗試從頭開始創建此表格,很快就會發現一些問題,而沒有簡單的解決方案。 我想知道是否存在一些框架(客戶端和服務器端)來處理此問題。 據我所知,沒有(但是我主要在Java世界中進行過搜索)。 因此,我認真地考慮至少在我的項目中建立自己的框架。
因此,在這個問題上,我要問幾件事。 首先,基於ajax的開發可能存在的問題。 然后,我正在尋找某種框架或實用程序來處理它們。 最后,如果沒有可用的框架,則必須具有什么功能。
這是我認為的問題:
1-必須啟用JavaScript。 安全偏執並不是唯一的問題:很多移動設備也無法使用該應用程序。
2-有時您需要更新多個DIV(例如,主要內容,菜單和面包屑)。
3-未知響應類型:調用Ajax時,也要設置回調函數,通常指定期望的響應是JavaScript對象還是DIV將結果放入其中。 但是,當您收到另一種類型的響應時,此操作將失敗:例如,會話已過期且用戶必須再次登錄。
4-瀏覽器的刷新,后退和前進按鈕可能真是麻煩。 用戶會根據情況期望不同的行為。
5-搜索引擎將網站編入索引時,請僅點擊鏈接。 因此,對於尚不知道的人,Ajax的內容加載將不會“存在”。
6-用戶可以要求在其他窗口/選項卡中打開鏈接。
7-地址欄不會顯示您所在的“真實”頁面。因此,您無法復制位置並將其發送給朋友或將該頁面添加為書簽。
8-如果您想通過該網站獲利,則可以投放一些廣告。 由於您沒有刷新整個頁面,並且想要在一段時間后更改廣告,因此您只需要刷新廣告所在的DIV。 但這可能違反廣告服務的條款。 實際上,它可能違反AdSense TOS。
9-刷新整個頁面時,所有JavaScript都會“清除”。 但是在Ajax調用中,所有JavaScript對象都將保留。
10-您不能輕易更改CSS屬性。
我認為您必須區分兩種情況:
因此,假設您的應用程序是類型1,則已經回答了問題1、5和8。
問題2:沒問題。 控制AJAX調用的javascript可以用答案做任何想做的事情。 分解成碎片並將其貼在DIV中,感覺如何。
問題3:與方法2相同:只需在JavaScript中關心這些情況即可。
在問題4、6和7旁邊:您可以通過將應用程序狀態保存到實際url的哈希中來重現許多正常的后退/前進行為。 您可以更改哈希值而無需重新加載頁面。 許多javascript框架都提供了使它更加舒適的功能(例如,查看dojo的歷史記錄)。
問題9:是正確的,但通常應該沒什么大問題,除非您的腳本有缺陷。
問題10:可以! javascript的強大功能可以幫助您,年輕的padawan。 例如,通過javascript插入鏈接標簽。
針對您概述的可用性問題,頁面內容不應該加載AJAX。 請改用PHP include()或一些類似的服務器端模板。
我想知道是否存在一些框架(客戶端和服務器端)來處理此問題。 據我所知,沒有
你在開玩笑! 有大量的Java Ajax框架:
Google的“ java ajax框架”列表的頂部是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.