當前位置:吉日网官网 - 傳統節日 - 什麽是ajax技術?

什麽是ajax技術?

術語Ajax用於描述壹組使瀏覽器能夠為用戶提供更自然的瀏覽體驗的技術。在Ajax出現之前,網站強迫用戶進入提交/等待/重新顯示範式,用戶的動作總是與服務器的“思考時間”同步。Ajax提供了與服務器異步通信的能力,從而將用戶從請求/響應的循環中解放出來。在Ajax的幫助下,可以使用JavaScript和DHTML在用戶點擊按鈕時立即更新UI,並向服務器發送異步請求來更新或查詢數據庫。當請求返回時,您可以使用JavaScript和CSS相應地更新UI,而不是刷新整個頁面。最重要的是,用戶甚至不知道瀏覽器正在與服務器通信:網站似乎立即做出了響應。

盡管Ajax所需的基礎設施已經存在了壹段時間,但異步請求的真正威力直到最近才得到利用。能夠擁有壹個響應速度極快的網站確實令人興奮,因為它最終允許開發人員和設計人員使用標準的HTML/CSS/JavaScript堆棧創建“類似桌面”的可用性。

通常,在J2EE,開發者過於註重服務和持久層的開發,以至於用戶界面的可用性已經落後了。在壹個典型的J2EE開發周期中,我們經常聽到這樣的話“我們沒有時間投資UI”或者“它不能用HTML實現”。然而,以下網站證明這些理由不再成立:

背包

谷歌建議

谷歌地圖

掌中世界

所有這些網站都告訴我們,Web應用程序不必完全依賴於從服務器重新加載頁面來將更改呈現給用戶。壹切似乎都發生在壹瞬間。簡而言之,當涉及到用戶界面的響應靈敏度時,基準設置得更高。

定義Ajax

Adaptive Path的傑西·詹姆斯·加勒特對Ajax的定義如下:

Ajax不是壹種技術。事實上,它是由幾種蓬勃發展的技術以壹種新的強大的方式組成的。Ajax包括:

基於CSS標準的表示;

使用文檔對象模型進行動態顯示和交互;

使用XMLHttpRequest與服務器進行異步通信;

用JavaScript綁定壹切。

這非常好,但是為什麽要命名為Ajax呢?事實上,Ajax這個術語是傑西·詹姆斯·加勒特發明的,他說它是“異步JavaScript+XML”的簡稱。

Ajax如何工作

Ajax的核心是JavaScript對象XmlHttpRequest。該對象最初是在Internet Explorer 5中引入的。這是壹種支持異步請求的技術。簡而言之,XmlHttpRequest使您能夠使用JavaScript向服務器發出請求並處理響應,而不會阻塞用戶。

1 AJAX或AJAH

* Ajax的很多經典應用其實都是使用xmlhttp空間訪問後臺程序,後臺程序的返回腳本是通過eval回調或者返回簡單數據開發的。這種開發模式的好處是設計簡單輕便,對於熟悉dhtml的開發者來說入門會相對容易,跨瀏覽器問題可以輕松解決,簡單的應用就足夠了。Gmail和google suggest都是這樣的。但在我看來,gmail已經把AJAH應用到極限了,更復雜的數據結構都是用簡單的數據和回調方法來組織,有點力不從心。

*在AJAX出現之前,傳統的做法是在後臺返回完整的xml文件並用腳本(使用控件)解析xml後,通過操作頁面的dom節點來動態生成頁面的壹部分。這樣做的好處是,妳可以充分利用xml強大的表達能力來傳輸各種數據結構。缺點是頁面的dom操作效率不高,IE在dom操作API上有很多bug。它被稱為“前AJAX ”,因為在AJAX這個術語出現之前,我們已經這樣做了很多年。

Ajax的另壹個傳統做法是在後臺返回壹個完整的xml文件,用腳本(使用控件)解析xml,生成html代碼,然後將它們返回到頁面層。這種方式避免了頁面dom操作的壹些問題,在生成內容很多的情況下,可以利用字符串計算的壹些優化技巧(主要是數組和正則應用)相當高效地生成頁面。在我看來,這是未來的發展趨勢。

我目前的項目主要采用第三種方式,結合第二種。我用自己的壹個小框架,模擬jsp的語法生成html代碼,但是依賴於瀏覽器的xml解析API,很難跨瀏覽器。Google的開源項目ajaxslt提供了純js xslt解決方案,功能更強大。它可以部分使用xslt解析頁面中的xml生成html或者其他形式的數據,但是它帶來了xslt的技術門檻。順豐上的ZK看似不錯,但帶來了xul的技術門檻,後臺捆綁J2EE服務器。

2緩存

如果使用xmlhttp控件,IE會在妳發起http請求的時候安排緩存策略,很多情況下,妳更新數據的時候無法獲得更新的數據。起初,我試圖通過傳統方式在URL中添加壹個隨機數來強制更新,但IE仍然無法發送新的請求。

壹種解決方案是在後臺寫expires: 0或者其他禁止前臺緩存的頭,但是這樣會帶來不必要的服務器壓力、響應延遲以及數據不更新時的帶寬浪費。

稍微好壹點的解決方案是,提交數據後前臺需要強制更新數據時:

xmlhttp . setrequestheader(" If-Modified-Since "," 0 ");

3系統錯誤:-1072896748。

用xmlhttp接收數據時,我們經常使用XmlDOM。Loadxml (XMLHttp。ResponseXML。XML)來判斷返回數據的正確性,但有時後臺發來不正確的XML會觸發-1072896748系統錯誤。這是由於xmlhttp.responsexml尚未解析,我們仍在嘗試訪問它的xml屬性。

解決方法是在使用responseXML.xml或responseText時嘗試/catch:

try { var tmp = xmlhttp . response XML . XML } catch(ex){ err = true;}

有些人喜歡異常就判斷異常,description== = "系統錯誤:-1072896748。"如果客戶端不是簡體中文版的系統,則不會進行判斷。其實這個地方只要有異常,就壹定要走異常處理流程,不用區分的那麽細。

  • 上一篇:2020端午節規劃方案【三】
  • 下一篇:?武術基本動作大全
  • copyright 2024吉日网官网