Ajax

Ajax

1.Ajax 是什么? 如何創(chuàng)建一個(gè) Ajax?

Ajax 并不算是一種新的技術(shù)憾朴,全稱是 asychronous javascript and xml,可以說是已有技術(shù)的組合焙贷,主要用來實(shí)現(xiàn)客戶端與服務(wù)器端的異步通信效果缩抡,實(shí)現(xiàn)頁面的局部刷新,早期的瀏覽器并不能原生支持 ajax哗讥,可以使用隱藏幀(iframe)方式變相實(shí)現(xiàn)異步效果迈窟,后來的瀏覽器提供了對(duì) ajax 的原生支持

使 用 ajax 原 生 方 式 發(fā) 送 請(qǐng) 求 主 要 通 過 XMLHttpRequest( 標(biāo) 準(zhǔn) 瀏 覽器).ActiveXObject(IE 瀏覽器)對(duì)象實(shí)現(xiàn)異步通信效果基本步驟:

var xhr =null;//創(chuàng)建對(duì)象 if(window.XMLHttpRequest){

xhr = new XMLHttpRequest();

}else{

xhr = new ActiveXObject("Microsoft.XMLHTTP");

}

xhr.open(“方式”,”地址”,”標(biāo)志位”);//初始化請(qǐng)求xhr.setRequestHeader(“”,””);//設(shè)置 http 頭信息 xhr.onreadystatechange =function(){}//指定回調(diào)函數(shù)xhr.send();//發(fā)送請(qǐng)求 js 框架(jQuery/EXTJS 等)提供的 ajax API 對(duì)原生的 ajax 進(jìn)行了封裝,熟悉了基礎(chǔ)

理論忌栅,再學(xué)習(xí)別的框架就會(huì)得心應(yīng)手车酣,好多都是換湯不換藥的內(nèi)容

2.****同步和異步的區(qū)別?

同步:阻塞的

-張三叫李四去吃飯,李四一直忙得不停索绪,張三一直等著湖员,直到李四忙完兩個(gè)人一塊去吃飯

=瀏覽器向服務(wù)器請(qǐng)求數(shù)據(jù),服務(wù)器比較忙瑞驱,瀏覽器一直等著(頁面白屏)娘摔,直到服務(wù)器返回?cái)?shù)據(jù),瀏覽器才能顯示頁面

異步:非阻塞的

-張三叫李四去吃飯唤反,李四在忙凳寺,張三說了一聲然后自己就去吃飯了鸭津,李四忙完后自己去吃

=瀏覽器向服務(wù)器請(qǐng)求數(shù)據(jù),服務(wù)器比較忙肠缨,瀏覽器可以自如的干原來的事情(顯示頁面)逆趋,服務(wù)器返回?cái)?shù)據(jù)的時(shí)候通知瀏覽器一聲,瀏覽器把返回的數(shù)據(jù)再渲染到頁面晒奕,局部更新

3.****如何解決跨域問題?

理解跨域的概念:協(xié)議.域名.端口都相同才同域闻书,否則都是跨域出于安全考慮,服務(wù)器不允許 ajax 跨域獲取數(shù)據(jù)脑慧,但是可以跨域獲取文件內(nèi)容魄眉,所以

基于這一點(diǎn),可以動(dòng)態(tài)創(chuàng)建 script 標(biāo)簽闷袒,使用標(biāo)簽的 src 屬性訪問 js 文件的形式獲取 js

腳本坑律,并且這個(gè) js 腳本中的內(nèi)容是函數(shù)調(diào)用,該函數(shù)調(diào)用的參數(shù)是服務(wù)器返回的數(shù)據(jù)囊骤,為了獲取這里的參數(shù)數(shù)據(jù)脾歇,需要事先在頁面中定義回調(diào)函數(shù),在回調(diào)函數(shù)中處理服務(wù)器返回的數(shù)據(jù)淘捡,這就是解決跨域問題的主流解決方案

4.****頁面編碼和被請(qǐng)求的資源編碼如果不一致如何處理藕各?

對(duì)于 ajax 請(qǐng)求傳遞的參數(shù),如果是 get 請(qǐng)求方式焦除,參數(shù)如果傳遞中文激况,在有些瀏覽器會(huì)亂碼,不同的瀏覽器對(duì)參數(shù)編碼的處理方式不同膘魄,所以對(duì)于 get 請(qǐng)求的參數(shù)需要使用

encodeURIComponent 函數(shù)對(duì)參數(shù)進(jìn)行編碼處理乌逐,后臺(tái)開發(fā)語言都有相應(yīng)的解碼 api。對(duì)于 post 請(qǐng)求不需要

進(jìn)行編碼

5.****簡(jiǎn)述 ajax 的過程创葡。

  1. 創(chuàng)建 XMLHttpRequest 對(duì)象,也就是創(chuàng)建一個(gè)異步調(diào)用對(duì)象

  2. 創(chuàng)建一個(gè)新的 HTTP 請(qǐng)求,并指定該 HTTP 請(qǐng)求的方法.URL 及驗(yàn)證信息

  3. 設(shè)置響應(yīng) HTTP 請(qǐng)求狀態(tài)變化的函數(shù)

  4. 發(fā)送 HTTP 請(qǐng)求

  5. 獲取異步調(diào)用返回的數(shù)據(jù)

  6. 使用 JavaScript 和 DOM 實(shí)現(xiàn)局部刷新

6.****闡述一下異步加載浙踢。

  1. 異步加載的方案: 動(dòng)態(tài)插入 script 標(biāo)簽

  2. 通過 ajax 去獲取 js 代碼,然后通過 eval 執(zhí)行

  3. script 標(biāo)簽上添加 defer 或者 async 屬性

  4. 創(chuàng)建并插入 iframe灿渴,讓它異步執(zhí)行 js

7.****請(qǐng)解釋一下 JavaScript 的同源策略洛波。

同源策略是客戶端腳本(尤其是 Javascript)的重要的安全度量標(biāo)準(zhǔn)。它最早出自

Netscape Navigator2.0骚露,其目的是防止某個(gè)文檔或腳本從多個(gè)不同源裝載蹬挤。所謂同源指的

是:協(xié)議,域名棘幸,端口相同焰扳,同源策略是一種安全協(xié)議,指一段腳本只能讀取來自同一來源的窗口和文檔的屬性。

8.GET 和 POST 的區(qū)別吨悍,何時(shí)使用 POST扫茅?

GET:一般用于信息獲取,使用 URL 傳遞參數(shù)育瓜,對(duì)所發(fā)送信息的數(shù)量也有限制葫隙,一般在

2000 個(gè)字符,有的瀏覽器是 8000 個(gè)字符POST:一般用于修改服務(wù)器上的資源爆雹,對(duì)所發(fā)送的信息沒有限制

在以下情況中停蕉,請(qǐng)使用 POST 請(qǐng)求:

  1. 無法使用緩存文件(更新服務(wù)器上的文件或數(shù)據(jù)庫)

  2. 向服務(wù)器發(fā)送大量數(shù)據(jù)(POST 沒有數(shù)據(jù)量限制)

  3. 發(fā)送包含未知字符的用戶輸入時(shí)愕鼓,POST 比 GET 更穩(wěn)定也更可靠

9.ajax 是什么?ajax 的交互模型?同步和異步的區(qū)別?如何解決跨域問題?

  1. 通過異步模式钙态,提升了用戶體驗(yàn)

  2. 優(yōu)化了瀏覽器和服務(wù)器之間的傳輸,減少不必要的數(shù)據(jù)往返菇晃,減少了帶寬占用

  3. Ajax 在客戶端運(yùn)行册倒,承擔(dān)了一部分本來由服務(wù)器承擔(dān)的工作,減少了大用戶量下的服務(wù)器負(fù)載磺送。

10. Ajax 的最大的特點(diǎn)是什么驻子。

Ajax 可以實(shí)現(xiàn)異步通信效果,實(shí)現(xiàn)頁面局部刷新估灿,帶來更好的用戶體驗(yàn)崇呵;按需獲取數(shù)據(jù),節(jié)約帶寬資源馅袁;

11.ajax 的缺點(diǎn)

1.ajax 不支持瀏覽器 back 按鈕域慷。

2.安全問題 AJAX 暴露了與服務(wù)器交互的細(xì)節(jié)。

3.對(duì)搜索引擎的支持比較弱汗销。

4.破壞了程序的異常機(jī)制犹褒。

12.ajax 請(qǐng)求的時(shí)候 get 和 post 方式的區(qū)別

get 一般用來進(jìn)行查詢操作,url 地址有長(zhǎng)度限制弛针,請(qǐng)求的參數(shù)都暴露在 url 地址當(dāng)中叠骑,如果傳遞中文參數(shù),需要自己進(jìn)行編碼操作削茁,安全性較低宙枷。

post 請(qǐng)求方式主要用來提交數(shù)據(jù),沒有數(shù)據(jù)長(zhǎng)度的限制茧跋,提交的數(shù)據(jù)內(nèi)容存在于 http

請(qǐng)求體中朦拖,數(shù)據(jù)不會(huì)暴漏在 url 地址中。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末厌衔,一起剝皮案震驚了整個(gè)濱河市璧帝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌富寿,老刑警劉巖睬隶,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锣夹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡苏潜,警方通過查閱死者的電腦和手機(jī)银萍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恤左,“玉大人贴唇,你說我怎么就攤上這事》纱” “怎么了戳气?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)巧鸭。 經(jīng)常有香客問我瓶您,道長(zhǎng),這世上最難降的妖魔是什么纲仍? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任呀袱,我火速辦了婚禮,結(jié)果婚禮上郑叠,老公的妹妹穿的比我還像新娘夜赵。我一直安慰自己,他們只是感情好乡革,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布寇僧。 她就那樣靜靜地躺著,像睡著了一般署拟。 火紅的嫁衣襯著肌膚如雪婉宰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天推穷,我揣著相機(jī)與錄音心包,去河邊找鬼。 笑死馒铃,一個(gè)胖子當(dāng)著我的面吹牛蟹腾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播区宇,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼娃殖,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了议谷?” 一聲冷哼從身側(cè)響起炉爆,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后芬首,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赴捞,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年郁稍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赦政。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡耀怜,死狀恐怖恢着,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情财破,我是刑警寧澤掰派,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站狈究,受9級(jí)特大地震影響碗淌,放射性物質(zhì)發(fā)生泄漏盏求。R本人自食惡果不足惜抖锥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碎罚。 院中可真熱鬧磅废,春花似錦、人聲如沸荆烈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽憔购。三九已至宫峦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間玫鸟,已是汗流浹背导绷。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屎飘,地道東北人妥曲。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像钦购,于是被迫代替她去往敵國和親檐盟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容