AJAX編程

即 Asynchronous Javascript And XML基协,AJAX 不是一門的新的語言,而是對現(xiàn)有持術(shù)的綜合利用日矫。本質(zhì)是在HTTP協(xié)議的基礎(chǔ)上以異步的方式與服務(wù)器進行通信斋攀。

異步

  • 指某段程序執(zhí)行時不會阻塞其它程序執(zhí)行,其表現(xiàn)形式為程序的執(zhí)行順序不依賴程序本身的書寫順序顿天,相反則為同步。
  • 其優(yōu)勢在于不阻塞程序的執(zhí)行蔑担,從而提升整體執(zhí)行效率牌废。
7.png
8.png

現(xiàn)實生活中的一個例子
打電話是同步 發(fā)消息是異步
XMLHttpRequest可以以異步方式的處理程序。

XMLHttpRequest

瀏覽器內(nèi)建對象啤握,用于在后臺與服務(wù)器通信(交換數(shù)據(jù)) 鸟缕,由此我們便可實現(xiàn)對網(wǎng)頁的部分更新,而不是刷新整個頁面。

  • 1懂从、下面是一個簡單的例子

見代碼示例8-1.html和8-1.php

9.png
  • 2授段、同步
    見代碼示例8-2.html 和 8-2.php

![Upload 11.png failed. Please try again.]

由于XMLHttpRequest本質(zhì)基于HTTP協(xié)議實現(xiàn)通信,所以結(jié)合HTTP協(xié)議和上面的例子我們分析得出如下結(jié)果

請求

  • 1番甩、請求行
    a) 需要有一個請求方式
    b) 一個請求地址url
xhr.open('get','index.php');
  • 2侵贵、請求頭
    a) 設(shè)置請求頭
    b) post方式請求時,必須設(shè)置
xhr.setRequestHeader('Conten-Type','application/x-www-form-urlencoded');

get方式請求可以不設(shè)置

  • 3缘薛、請求主體

    a) 實際上是客戶端請求的數(shù)據(jù)
    b) 當以post方式請求時窍育,需要xhr.send(‘key=val&key1=val2’)的形式
    c) 當以get方式請求時,參數(shù)是放在請求url上的宴胧,所以一般寫成xhr.send()或xhr.send(null);

xhr.send(null);

響應(yīng)

  • HTTP響應(yīng)是由服務(wù)端發(fā)出的漱抓,作為客戶端更應(yīng)關(guān)心的是響應(yīng)的結(jié)果。
  • HTTP響應(yīng)3個組成部分與XMLHttpRequest方法或?qū)傩缘膶?yīng)關(guān)系恕齐。
  • 由于服務(wù)器做出響應(yīng)需要時間(比如網(wǎng)速慢等原因)乞娄,所以我們需要監(jiān)聽服務(wù)器響應(yīng)的狀態(tài),然后才能進行處理显歧。
12.png

上圖中的onreadystatechange是Javascript的事件的一種仪或,其意義在于監(jiān)聽XMLHttpRequest的狀態(tài)

  • 1、獲取狀態(tài)行(包括狀態(tài)碼&狀態(tài)信息)
xhr.status   // 狀態(tài)碼
xhr.statusText  //狀態(tài)信息
  • 2士骤、獲取響應(yīng)頭
//獲取指定頭信息
xhr.getResponseHesder('Content-Type);
//獲取所有響應(yīng)頭信息
xhr.getAllResponseHeaders();
  • 3溶其、響應(yīng)主體
xhr.responseText;
xhr.responseXML;

API詳解

xhr.open() 發(fā)起請求,可以是get敦间、post方式
xhr.setRequestHeader() 設(shè)置請求頭
xhr.send() 發(fā)送請求主體get方式使用xhr.send(null)
xhr.onreadystatechange = function () {} 監(jiān)聽響應(yīng)狀態(tài)
xhr.readyState = 0時,UNSENT open尚未調(diào)用
xhr.readyState = 1時束铭,OPENED open已調(diào)用
xhr.readyState = 2時廓块,HEADERS_RECEIVED 接收到頭信息
xhr.readyState = 3時,LOADING 接收到響應(yīng)主體
xhr.readyState = 4時契沫,DONE 響應(yīng)完成
不用記憶狀態(tài)带猴,只需要了解有狀態(tài)變化這個概念
xhr.status表示響應(yīng)碼,如200
xhr.statusText表示響應(yīng)信息懈万,如OK
xhr.getAllResponseHeaders() 獲取全部響應(yīng)頭信息

xhr.getResponseHeader('key') 獲取指定頭信息
xhr.responseText拴清、xhr.responseXML都表示響應(yīng)主體

  • 注:GET和POST請求方式的差異(面試題)

    • 1、GET沒有請求主體会通,使用xhr.send(null)
    • 2口予、GET可以通過在請求URL上添加請求參數(shù)
    • 3、POST可以通過xhr.send('name=itcast&age=10')
    • 4涕侈、POST需要設(shè)置
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  • 5沪停、GET效率更好(應(yīng)用多)
  • 6、GET大小限制約4K,POST則沒有限制
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末木张,一起剝皮案震驚了整個濱河市众辨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舷礼,老刑警劉巖鹃彻,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異妻献,居然都是意外死亡蛛株,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門旋奢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泳挥,“玉大人,你說我怎么就攤上這事至朗√敕” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵锹引,是天一觀的道長矗钟。 經(jīng)常有香客問我,道長嫌变,這世上最難降的妖魔是什么吨艇? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮腾啥,結(jié)果婚禮上东涡,老公的妹妹穿的比我還像新娘。我一直安慰自己倘待,他們只是感情好疮跑,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凸舵,像睡著了一般祖娘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上啊奄,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天渐苏,我揣著相機與錄音,去河邊找鬼菇夸。 笑死琼富,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的庄新。 我是一名探鬼主播公黑,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了凡蚜?” 一聲冷哼從身側(cè)響起人断,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朝蜘,沒想到半個月后恶迈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谱醇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年暇仲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片副渴。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡奈附,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出煮剧,到底是詐尸還是另有隱情斥滤,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布勉盅,位于F島的核電站佑颇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏草娜。R本人自食惡果不足惜挑胸,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宰闰。 院中可真熱鬧茬贵,春花似錦、人聲如沸移袍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咐容。三九已至,卻和暖如春蚂维,著一層夾襖步出監(jiān)牢的瞬間戳粒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工虫啥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蔚约,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓涂籽,卻偏偏與公主長得像苹祟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

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

  • 一树枫、HTTP服務(wù) 1.1 C/S和B/S B/S架構(gòu):即Broswer直焙、Server,將所有的服務(wù)都可以通過瀏覽器...
    福爾摩雞閱讀 683評論 0 4
  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,188評論 0 7
  • Ajax和XMLHttpRequest 我們通常將Ajax等同于XMLHttpRequest压彭,但細究起來它們兩個是...
    changxiaonan閱讀 2,230評論 0 2
  • 一 何為ajaxajax(Asynchronous Javascript And Xml)不是一門新的語言玻募,而是對...
    常威爆打來福閱讀 320評論 0 5
  • 本文詳細介紹了 XMLHttpRequest 相關(guān)知識绎秒,涉及內(nèi)容: AJAX、XMLHTTP厨喂、XMLHttpReq...
    semlinker閱讀 13,645評論 2 18