2010-05-04 74 views
0

我對開發基於Ajax的應用程序非常感興趣。這是通過XMLHttpRequest加載幾乎所有的應用程序內容,而不是僅僅一些組合和小部件。但是,如果我嘗試從頭開始創建,很快我會發現一些問題,但沒有簡單的解決方案。我想知道是否有一些框架(客戶端和服務器端)來處理這個問題。據我所知,沒有(但我主要在Java世界搜索)。所以我正在認真考慮做我自己的框架,至少對我的項目來說。基於Ajax的應用程序中的問題

因此,在這個問題中我要求幾件事。首先,基於ajax開發的可能的問題。然後,我正在尋找一些框架或實用程序來處理它們。最後,如果沒有可用的框架,它必須具備哪些功能。

下面是我認爲的問題:

1 - 必須啓用JavaScript。安全偏執狂並不是唯一的問題:許多移動設備也無法使用該應用程序。

2 - 有時您需要更新多個DIV(例如主要內容,菜單和麪包屑)。

3 - 未知的響應類型:當您進行Ajax調用時,您也設置了回調函數,通常指定預期響應是否爲JavaScript對象或DIV將結果放入哪個位置。但是,當您獲得另一種類型的響應時會失敗:例如會話已過期並且用戶必須重新登錄。

4 - 瀏覽器刷新,後退和前進按鈕可能是一個真正的痛苦。用戶會根據情況預計不同的行爲。

5 - 當搜索引擎索引一個網站時,只能跟隨鏈接。因此,Ajax的內容加載將不會「存在」,因爲誰還不知道它。

6 - 用戶可以要求在不同的窗口/選項卡中打開鏈接。

7 - 地址欄不顯示您所在的「真實」頁面。因此,您不能複製位置並將其發送給朋友或書籤頁面。

8 - 如果您想通過網站獲利,您可以放置​​一些廣告。由於您不刷新整個頁面,並且您想在一段時間後更改廣告,因此您只需刷新廣告所在的DIV。但這可能違反了您的廣告服務的條款和條件。實際上,它可能會違反AdSense TOS。

9 - 刷新整個頁面時,所有JavaScript都會被「清除」。但在Ajax調用中,所有JavaScript對象都將保留。

10 - 你不能輕易改變你的CSS屬性。

回答

0

不應該使用AJAX加載頁面內容,這正是您列出的可用性問題。使用PHP include()或一些類似的服務器端模板來代替。

1

我認爲你有兩個方案之間進行區分:

  1. Web應用程序是登錄的用戶(例如,博客作者和員工......)真正的應用。 AJAX作爲主要技術在這裏很好,因爲您可以期待您的用戶滿足您的系統要求(體面的瀏覽器,JavaScript)。
  2. 網絡應用程序是任何人都可以看到的普通網站。在這種情況下,作爲主要技術的AJAX完全不是很好,因爲你無視訪問者,搜索引擎等。總是編碼沒有花哨的東西工作的網站,然後用可選的花哨的東西來增強網站。

因此,假設您的應用程序是類型1,您的問題1,5和8已經得到解答。

問題2:沒問題。控制AJAX調用的JavaScript可以做任何想要的答案。將它炸成碎片,並將它們粘在DIV中,感覺如何。

問題3:與2相同:只需在javascript中關心這些情況。

在問題4,6和7旁邊:通過將應用程序狀態保存到實際url的哈希中,您可以重現很多正常的後退/前進行爲。您可以在不重新加載頁面的情況下更改散列。許多JavaScript框架提供了使這更加舒適的功能(例如,查看dojo的歷史記錄)。

問題9:這是正確的,但通常應該不是什麼大問題,除非你的腳本有缺陷。

問題10:你可以! JavaScript的力量可以幫助你,那個年輕的padawan。例如,通過JavaScript插入鏈接標籤。

-1

我不知道是否有一些框架(客戶端和服務器端)來處理這個問題。據我所知,沒有

你是在開玩笑吧!有一個squillion Java的Ajax框架:

上衣的 「java ajax框架」 一個谷歌的名單是:

http://ajaxpatterns.org/Java_Ajax_Frameworks

相關問題