2017-09-27

1.什么是Ajax

AJAX(Asynchronous JavaScript And XML)翻譯成中文就是“異步Javascript和XML”。即使用Javascript語(yǔ)言與服務(wù)器進(jìn)行異步交互,傳輸?shù)臄?shù)據(jù)為XML(當(dāng)然,傳輸?shù)臄?shù)據(jù)不只是XML)。

AJAX還有一個(gè)最大的特點(diǎn)就是,當(dāng)服務(wù)器響應(yīng)時(shí),不用刷新整個(gè)瀏覽器頁(yè)面,而是可以局部刷新。這一特點(diǎn)給用戶的感受是在不知不覺中完成請(qǐng)求和響應(yīng)過程。

與服務(wù)器異步交互;

瀏覽器頁(yè)面局部刷新;

2.同步交互與異步交互

同步交互:客戶端發(fā)出一個(gè)請(qǐng)求后,需要等待服務(wù)器響應(yīng)結(jié)束后,才能發(fā)出第二個(gè)請(qǐng)求;

異步交互:客戶端發(fā)出一個(gè)請(qǐng)求后,無(wú)需等待服務(wù)器響應(yīng)結(jié)束,就可以發(fā)出第二個(gè)請(qǐng)求。

3.AJAX常見應(yīng)用情景

當(dāng)我們?cè)诎俣戎休斎胍粋€(gè)“傳”字后,會(huì)馬上出現(xiàn)一個(gè)下拉列表!列表中顯示的是包含“傳”字的10個(gè)關(guān)鍵字。

其實(shí)這里就使用了AJAX技術(shù)!當(dāng)文件框發(fā)生了輸入變化時(shí),瀏覽器會(huì)使用AJAX技術(shù)向服務(wù)器發(fā)送一個(gè)請(qǐng)求,查詢包含“傳”字的前10個(gè)關(guān)鍵字,然后服務(wù)器會(huì)把查詢到的結(jié)果響應(yīng)給瀏覽器,最后瀏覽器把這10個(gè)關(guān)鍵字顯示在下拉列表中。

整個(gè)過程中頁(yè)面沒有刷新,只是刷新頁(yè)面中的局部位置而已!

當(dāng)請(qǐng)求發(fā)出后,瀏覽器還可以進(jìn)行其他操作,無(wú)需等待服務(wù)器的響應(yīng)!

當(dāng)輸入用戶名后,把光標(biāo)移動(dòng)到其他表單項(xiàng)上時(shí),瀏覽器會(huì)使用AJAX技術(shù)向服務(wù)器發(fā)出請(qǐng)求,服務(wù)器會(huì)查詢名為zhangSan的用戶是否存在,最終服務(wù)器返回true表示名為zhangSan的用戶已經(jīng)存在了,瀏覽器在得到結(jié)果后顯示“用戶名已被注冊(cè)1。

整個(gè)過程中頁(yè)面沒有刷新,只是局部刷新了;

在請(qǐng)求發(fā)出后,瀏覽器不用等待服務(wù)器響應(yīng)結(jié)果就可以進(jìn)行其他操作;

4.AJAX的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

AJAX使用Javascript技術(shù)向服務(wù)器發(fā)送異步請(qǐng)求;

AJAX無(wú)須刷新整個(gè)頁(yè)面;

因?yàn)榉?wù)器響應(yīng)內(nèi)容不再是整個(gè)頁(yè)面,而是頁(yè)面中的局部,所以AJAX性能高;

缺點(diǎn):

AJAX并不適合所有場(chǎng)景,很多時(shí)候還是要使用同步交互;

AJAX雖然提高了用戶體驗(yàn),但無(wú)形中向服務(wù)器發(fā)送的請(qǐng)求次數(shù)增多了,導(dǎo)致服務(wù)器壓力增大;

因?yàn)锳JAX是在瀏覽器中使用Javascript技術(shù)完成的,所以還需要處理瀏覽器兼容性問題;

Ajax的基本工作原理及流程:

在一般的 Web 應(yīng)用程序中,用戶填寫表單字段并單擊 Submit 按鈕。然后整個(gè)表單發(fā)送到服務(wù)器,服務(wù)器將它轉(zhuǎn)發(fā)給處理表單的腳本(通常是 PHP 或 Java,也可能是 CGI 進(jìn)程或者類似的東西),腳本執(zhí)行完成后再發(fā)送回全新的頁(yè)面。該頁(yè)面可能是帶有已經(jīng)填充某些數(shù)據(jù)的新表單的 HTML,也可能是確認(rèn)頁(yè)面,或者是具有根據(jù)原來表單中輸入數(shù)據(jù)選擇的某些選項(xiàng)的頁(yè)面。當(dāng)然,在服務(wù)器上的腳本或程序處理和返回新表單時(shí)用戶必須等待。屏幕變成一片空白,等到服務(wù)器返回?cái)?shù)據(jù)后再重新繪制。這就是交互性差的原因,用戶得不到立即反饋,因此感覺不同于桌面應(yīng)用程序。

Ajax 基本上就是把 JavaScript 技術(shù)和 XMLHttpRequest 對(duì)象放在 Web 表單和服務(wù)器之間。當(dāng)用戶填寫表單時(shí),數(shù)據(jù)發(fā)送給一些 JavaScript 代碼而不是 直接發(fā)送給服務(wù)器。相反,JavaScript 代碼捕獲表單數(shù)據(jù)并向服務(wù)器發(fā)送請(qǐng)求。同時(shí)用戶屏幕上的表單也不會(huì)閃爍、消失或延遲。換句話說,JavaScript 代碼在幕后發(fā)送請(qǐng)求,用戶甚至不知道請(qǐng)求的發(fā)出。更好的是,請(qǐng)求是異步發(fā)送的,就是說 JavaScript 代碼(和用戶)不用等待服務(wù)器的響應(yīng)。因此用戶可以繼續(xù)輸入數(shù)據(jù)、滾動(dòng)屏幕和使用應(yīng)用程序。

然后,服務(wù)器將數(shù)據(jù)返回 JavaScript 代碼(仍然在 Web 表單中),后者決定如何處理這些數(shù)據(jù)。它可以迅速更新表單數(shù)據(jù),讓人感覺應(yīng)用程序是立即完成的,表單沒有提交或刷新而用戶得到了新數(shù)據(jù)。JavaScript 代碼甚至可以對(duì)收到的數(shù)據(jù)執(zhí)行某種計(jì)算,再發(fā)送另一個(gè)請(qǐng)求,完全不需要用戶干預(yù)!這就是 XMLHttpRequest 的強(qiáng)大之處。它可以根據(jù)需要自行與服務(wù)器進(jìn)行交互,用戶甚至可以完全不知道幕后發(fā)生的一切。結(jié)果就是類似于桌面應(yīng)用程序的動(dòng)態(tài)、快速響應(yīng)、高交互性的體驗(yàn),但是背后又擁有互聯(lián)網(wǎng)的全部強(qiáng)大力量。

以上所述是小編給大家介紹的Ajax入門學(xué)習(xí)教程,希望對(duì)大家有所幫助

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,170評(píng)論 1 92
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,659評(píng)論 19 139
  • 5 分享內(nèi)容到你的網(wǎng)站 上一章中,你在網(wǎng)站中構(gòu)建了用戶注冊(cè)和認(rèn)證。你學(xué)會(huì)了如何為用戶創(chuàng)建自定義的個(gè)人資料模型,并添...
    lakerszhy閱讀 1,730評(píng)論 5 16
  • 我們之間的不同 我在鬧,我在擔(dān)心。沒有想過不走,只想重新來過。 他擔(dān)心的是我會(huì)說各自走。 我想改變他,而不是自己。...
    行一館閱讀 359評(píng)論 0 0

友情鏈接更多精彩內(nèi)容