首頁 > 專家說

什么是ajax技術(shù)

來源:新能源網(wǎng)
時(shí)間:2024-08-17 12:06:25
熱度:

什么是ajax技術(shù)【專家解說】:術(shù)語Ajax用來描述一組技術(shù),它使瀏覽器可以為用戶提供更為自然的瀏覽體驗(yàn)。在Ajax之前,Web站點(diǎn)強(qiáng)制用戶進(jìn)入提交/等待/重新顯示范例,用戶的動(dòng)作

【專家解說】:術(shù)語Ajax用來描述一組技術(shù),它使瀏覽器可以為用戶提供更為自然的瀏覽體驗(yàn)。在Ajax之前,Web站點(diǎn)強(qiáng)制用戶進(jìn)入提交/等待/重新顯示范例,用戶的動(dòng)作總是與服務(wù)器的“思考時(shí)間”同步。Ajax提供與服務(wù)器異步通信的能力,從而使用戶從請(qǐng)求/響應(yīng)的循環(huán)中解脫出來。借助于Ajax,可以在用戶單擊按鈕時(shí),使用Javascript和DHTML立即更新UI,并向服務(wù)器發(fā)出異步請(qǐng)求,以執(zhí)行更新或查詢數(shù)據(jù)庫。當(dāng)請(qǐng)求返回時(shí),就可以使用Javascript和CSS來相應(yīng)地更新UI,而不是刷新整個(gè)頁面。最重要的是,用戶甚至不知道瀏覽器正在與服務(wù)器通信:Web站點(diǎn)看起來是即時(shí)響應(yīng)的。 雖然Ajax所需的基礎(chǔ)架構(gòu)已經(jīng)出現(xiàn)了一段時(shí)間,但直到最近異步請(qǐng)求的真正威力才得到利用。能夠擁有一個(gè)響應(yīng)極其靈敏的Web站點(diǎn)確實(shí)激動(dòng)人心,因?yàn)樗罱K允許開發(fā)人員和設(shè)計(jì)人員使用標(biāo)準(zhǔn)的HTML/CSS/Javascript堆棧創(chuàng)建“桌面風(fēng)格的(desktop-like)”可用性。 通常,在J2EE中,開發(fā)人員過于關(guān)注服務(wù)和持久性層的開發(fā),以至于用戶界面的可用性已經(jīng)落后。在一個(gè)典型的J2EE開發(fā)周期中,常常會(huì)聽到這樣的話,“我們沒有可投入U(xiǎn)I的時(shí)間”或“不能用HTML實(shí)現(xiàn)”。但是,以下Web站點(diǎn)證明,這些理由再也站不住腳了: BackPack Google Suggest Google Maps PalmSphere 所有這些Web站點(diǎn)都告訴我們,Web應(yīng)用程序不必完全依賴于從服務(wù)器重新載入頁面來向用戶呈現(xiàn)更改。一切似乎就在瞬間發(fā)生。簡(jiǎn)而言之,在涉及到用戶界面的響應(yīng)靈敏度時(shí),基準(zhǔn)設(shè)得更高了。 定義Ajax Adaptive Path公司的Jesse James Garrett這樣定義Ajax: Ajax不是一種技術(shù)。實(shí)際上,它由幾種蓬勃發(fā)展的技術(shù)以新的強(qiáng)大方式組合而成。Ajax包含: 基于CSS標(biāo)準(zhǔn)的表示; 使用document Object Model進(jìn)行動(dòng)態(tài)顯示和交互; 使用XMLHttpRequest與服務(wù)器進(jìn)行異步通信; 使用Javascript綁定一切。 這非常好,但為什么要以Ajax命名呢?其實(shí)術(shù)語Ajax是由Jesse James Garrett創(chuàng)造的,他說它是“Asynchronous Javascript + XML的簡(jiǎn)寫”。 Ajax的工作原理 Ajax的核心是Javascript對(duì)象XmlHttpRequest。該對(duì)象在Internet Explorer 5中首次引入,它是一種支持異步請(qǐng)求的技術(shù)。簡(jiǎn)而言之,XmlHttpRequest使您可以使用Javascript向服務(wù)器提出請(qǐng)求并處理響應(yīng),而不阻塞用戶。 1 AJAX還是AJAH * AJAX的很多經(jīng)典應(yīng)用其實(shí)都是利用xmlhttp空間訪問后臺(tái)程序,后臺(tái)程序返回腳本用eval回調(diào)或者返回簡(jiǎn)單數(shù)據(jù)的方式來開發(fā)。這樣的開發(fā)模式的好處是設(shè)計(jì)簡(jiǎn)單輕巧,對(duì)熟悉dhtml的開發(fā)者來說上手會(huì)比較塊,跨瀏覽器問題也容易解決,做簡(jiǎn)單的應(yīng)用也夠用。gmail,google suggest都是用這種方式。但是在我看來gmail已經(jīng)吧AJAH應(yīng)用到極限了,更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)用簡(jiǎn)單數(shù)據(jù)和回調(diào)方式來組織就開始有點(diǎn)力不從心了。 * 前AJAX的一種傳統(tǒng)做法是后臺(tái)返回完整的xml文件后用腳本(利用控件)解析xml后操作頁面的dom節(jié)點(diǎn)來動(dòng)態(tài)生成頁面的一部分。這樣作的優(yōu)點(diǎn)是可以充分利用xml的強(qiáng)大表達(dá)能力傳輸各種數(shù)據(jù)結(jié)構(gòu),缺點(diǎn)是頁面的dom操作效率不高,而且IE在dom操作的API上bug多多。之所以叫“前AJAX”,因?yàn)槲覀冊(cè)贏JAX這個(gè)名詞出現(xiàn)前已經(jīng)這樣做了很多年了。 * AJAX另一種傳統(tǒng)做法是后臺(tái)返回完整的xml文件后用腳本(利用控件)解析xml后生成html代碼再灌回頁面的層中。這樣的做法回避了頁面dom操作的一些問題,在生成的內(nèi)容比較多的時(shí)候利用一些字符串計(jì)算的優(yōu)化技巧(主要是數(shù)組和正則的應(yīng)用)可以相當(dāng)高效的生成頁面。在我看來這是未來的發(fā)展趨勢(shì)。 我現(xiàn)在的項(xiàng)目主要采用的是第三種方式,結(jié)合第二種。我使用的是自己的一個(gè)小巧的框架,模擬jsp的語法來生成html代碼,但是依賴于瀏覽器的xml解析API,因此難以跨瀏覽器。google的開源項(xiàng)目ajaxslt提供了一個(gè)純js的xslt解決方式,功能更強(qiáng)大,可以在頁面中局部的應(yīng)用xslt解析xml生成html或者其他形式的數(shù)據(jù),但是帶來了xslt這個(gè)技術(shù)門檻。sf上的ZK似乎也不錯(cuò),但是帶來的是xul這個(gè)技術(shù)門檻,同時(shí)后臺(tái)被綁定在了J2EE服務(wù)器上面。 2 CACHE 如果使用xmlhttp控件,在發(fā)起http請(qǐng)求的時(shí)候IE會(huì)包辦cache策略,很多時(shí)候更新了數(shù)據(jù)卻無法獲得更新后的數(shù)據(jù)。一開始試圖用傳統(tǒng)方式在URL后面加隨機(jī)數(shù)來強(qiáng)制更新,但是IE仍然距不發(fā)出新的請(qǐng)求。 一個(gè)解決方法是在后臺(tái)寫expires: 0或者其他的禁止前臺(tái)cache的頭,但是這樣在數(shù)據(jù)沒有更新的時(shí)候又會(huì)帶來不必要的服務(wù)器壓力、響應(yīng)延遲和帶寬浪費(fèi)。 一個(gè)稍微好一點(diǎn)的解決方法是,前臺(tái)在提交數(shù)據(jù)以后,需要強(qiáng)制更新數(shù)據(jù)的時(shí)候: xmlhttp.setRequestHeader("If-Modified-Since","0"); 3 系統(tǒng)錯(cuò)誤: -1072896748。 用xmlhttp接收到數(shù)據(jù)的時(shí)候經(jīng)常是用xmldom.loadXML(xmlhttp.responseXML.xml)來判斷返回的數(shù)據(jù)的正確性,但是如果后臺(tái)送過來不正確的xml的時(shí)候有時(shí)回觸發(fā)-1072896748系統(tǒng)錯(cuò)誤。這是因?yàn)閤mlhttp.responseXML已經(jīng)沒有解析到東西了,我們還試圖訪問它的xml屬性而觸發(fā)的。 解決的方法是在使用responseXML.xml 或者 responseText的時(shí)候要做try/catch: try{var tmp = xmlhttp.responseXML.xml}catch(ex){err=true;} 有些人喜歡catch的時(shí)候判斷 exception.description=="系統(tǒng)錯(cuò)誤: -1072896748。" , 如果客戶端不是簡(jiǎn)體中文版的系統(tǒng)的時(shí)候就判斷不到了。其實(shí)這個(gè)地方只要有異常,都必須走異常處理流程了,不用區(qū)分的那么仔細(xì)。
  1. 墻體保溫有技術(shù)哪些?
    2024-08-17
  2. 哪能免費(fèi)下載到高中通用技術(shù)《技術(shù)與設(shè)計(jì)2》的復(fù)習(xí)提綱??
    2024-08-17
  3. 根據(jù)《中華人民共和國(guó)循環(huán)經(jīng)濟(jì)促進(jìn)法》,企業(yè)在進(jìn)行技術(shù)改造過程中,應(yīng)當(dāng)采用能夠達(dá)到()的污染防治技術(shù)。
    2024-08-17
  4. 煤礦綜采工作面強(qiáng)制放頂安全技術(shù)措施
    2024-08-17
  5. 2024-08-17
  6. 潤(rùn)農(nóng)8號(hào)土元養(yǎng)殖技術(shù)是不是騙子
    2024-08-17
  7. 請(qǐng)問去那里 能學(xué)習(xí)考察到牛羊糞微生物發(fā)酵有機(jī)肥 技術(shù)?。????? 真心求幫忙
    2024-08-17
  8. 煤炭企業(yè)專業(yè)技術(shù)人員包括哪些人
    2024-08-17
  9. 中國(guó)石油西南油氣田分公司安全環(huán)保與技術(shù)監(jiān)督研究院怎么樣?待遇,特別是搞HSE的
    2024-08-17
  10. 污水處理設(shè)備濰坊沃華的技術(shù)
    2024-08-17
  11. 南通紫瑯職業(yè)技術(shù)學(xué)院 是屬于大專 還是中專???
    2024-08-17
  12. 專業(yè)是航海技術(shù)
    2024-08-17
  13. 關(guān)于水電、風(fēng)電、太陽能發(fā)電、城市垃圾焚燒發(fā)電4種發(fā)電技術(shù)的問題?
    2024-08-17
  14. 黑龍江省專業(yè)技術(shù)人員繼續(xù)教育建筑工程專業(yè)共需課程作業(yè):人類能源危機(jī)面臨的挑戰(zhàn)與機(jī)遇是什么?
    2024-08-17
  15. 小區(qū)無負(fù)壓供水設(shè)備出水壓力平滑控制技術(shù)有什么好處
    2024-08-17