關(guān)于AJAX的心得

如往常一樣我們先來(lái)了解一下什么是AJAX邪意?

AJAX##

AJAX 是一種創(chuàng)建交互式網(wǎng)站網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)摹量, 可以訪(fǎng)問(wèn)服務(wù)器數(shù)據(jù)的局部刷新的技術(shù)屠升。

AJAX能干什么呢恬惯?
1.可以做搜索中的自動(dòng)提示
2.郵箱注冊(cè) 用戶(hù)名檢測(cè)
3.圖片的無(wú)刷新加載

Ajax技術(shù)的核心是[XMLHttpRequest]對(duì)象(簡(jiǎn)稱(chēng)XHR)蜻牢,可以通過(guò)使用XHR對(duì)象獲取到服務(wù)器的數(shù)據(jù)烤咧,然后再通過(guò)DOM將數(shù)據(jù)插入到頁(yè)面中呈現(xiàn)。雖然名字中包含XML抢呆,但Ajax通訊與數(shù)據(jù)格式無(wú)關(guān)煮嫌,所以我們的數(shù)據(jù)格式可以是XML或JSON等格式。

JSON##

JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式镀娶。 通過(guò)JavaScript中的一些模式來(lái)表示結(jié)構(gòu)化數(shù)據(jù), JSON 并不是 JavaScript 獨(dú)有的數(shù)據(jù)格式立膛,其他很多語(yǔ)言都可以對(duì) JSON 進(jìn)行解析和序列化,
JSON 的語(yǔ)法可以表示三種類(lèi)型的值:

  1. 對(duì)象表示法
  2. 數(shù)組表示法
  3. 對(duì)象和數(shù)組的結(jié)合的表示法
    除了JSON外, 還有XML也是一種數(shù)據(jù)表示方式;

XML##

XML是擴(kuò)展標(biāo)記語(yǔ)言 (Extensible Markup Language, XML) ,用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言梯码,可以用來(lái)標(biāo)記數(shù)據(jù)宝泵、定義數(shù)據(jù)類(lèi)型,是一種允許用戶(hù)對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義的源語(yǔ)言轩娶。
XHR 的出現(xiàn)儿奶,提供了向服務(wù)器發(fā)送請(qǐng)求和解析服務(wù)器響應(yīng)流暢的接口。能夠以異步方式從服務(wù)器獲取更多的信息鳄抒,這就意味著闯捎,用戶(hù)只要觸發(fā)某一事件,在不刷新網(wǎng)頁(yè)的情況下许溅,更新服務(wù)器最新的數(shù)據(jù)瓤鼻。

雖然 Ajax 中的 x 代表的是 XML,但 Ajax 通信和數(shù)據(jù)格式有關(guān)贤重,也就是說(shuō)這種技術(shù)不一定使用 XML茬祷。相反目前常用的數(shù)據(jù)格式是JSON.
XHR對(duì)象支持IE7+、Firefox并蝗、Opera祭犯、Chrome 和 Safari 等瀏覽器, 但是不支持IE6。

創(chuàng)建 XHR 對(duì)象可以直接實(shí)例化 XMLHttpRequest 滚停。
var xhr = new XMLHttpRequest();
alert(xhr); //XMLHttpRequest

如果是 IE6 及以下沃粗,那么我們必須還需要使用 ActiveX 對(duì)象通過(guò) 傳入?yún)?shù)Microsoft.XMLHTTP來(lái)實(shí)現(xiàn)。
xhr = new ActiveXObject("Microsoft.XMLHTTP");

open()方法:

它接受三個(gè)參數(shù):要發(fā)送的請(qǐng)求類(lèi)型(get键畴、post)最盅、請(qǐng)求的 URL 和表示是否異步
xhr.open('get', 'demo.json', false); //對(duì)于demo.json 的 get 請(qǐng)求,false表示同步

send()方法:

向服務(wù)器發(fā)送請(qǐng)求
open()方法并不會(huì)真正發(fā)送請(qǐng)求,而是準(zhǔn)備好需要發(fā)送給服務(wù)器的內(nèi)容檩禾。我們需要通過(guò)send()方法向服務(wù)器發(fā)送請(qǐng)求
send()方法接受一個(gè)參數(shù)挂签,作為請(qǐng)求體發(fā)送的數(shù)據(jù)。如果是get方式請(qǐng)求則填 null盼产。
xhr.send(null);

abort()方法

取消異步請(qǐng)求, 如果需要取消某異步請(qǐng)求, 則在send()之后再調(diào)用, 寫(xiě)在send()之前調(diào)用會(huì)報(bào)錯(cuò)
//取消異步請(qǐng)求
xhr.abort();

XHR 對(duì)象的屬性:

當(dāng)請(qǐng)求發(fā)送到服務(wù)器端饵婆,收到響應(yīng)后,響應(yīng)的數(shù)據(jù)會(huì)自動(dòng)填充 XHR 對(duì)象的屬性戏售。一共有四個(gè)屬性:

status: 響應(yīng)的 HTTP 狀態(tài) (重要)
statusText: HTTP 狀態(tài)的說(shuō)明 (重要)
responseText:  作為響應(yīng)主體被返回的文本 (重要)
responseXML: 如果響應(yīng)主體內(nèi)容類(lèi)型是"text/xml"或"application/xml"侨核,則返回包含響應(yīng)數(shù)據(jù)的 XML文檔,否則是null

readyState 屬性

0:       沒(méi)有發(fā)送
1:       已經(jīng)發(fā)送了,但服務(wù)器還沒(méi)有接收到
2:       服務(wù)器已經(jīng)接收到了灌灾,但還沒(méi)有處理完數(shù)據(jù)
3:       服務(wù)器已經(jīng)處理完數(shù)據(jù)搓译,并已經(jīng)返回
4:       客戶(hù)端已經(jīng)正常接收到服務(wù)器返回的數(shù)據(jù)

status 屬性:

  HTTP請(qǐng)求狀態(tài)碼, 一般 HTTP 狀態(tài)代碼為 200 則表示請(qǐng)求服務(wù)器成功
//所以我們一般在寫(xiě)的時(shí)候都會(huì)加上一個(gè)判斷
if (xhr.readyState == 4 && xhr.status == 200) {
        
        }
HTTP 協(xié)議中的狀態(tài)碼
   404:  找不到服務(wù)器中的資源
   403:  服務(wù)器緩存
   500:  服務(wù)器故障
   200:  【正常】返回
   400:  語(yǔ)法錯(cuò)誤導(dǎo)致服務(wù)器不識(shí)別
   503:  由于服務(wù)器過(guò)載或維護(hù)導(dǎo)致無(wú)法完成請(qǐng)求
//這些狀態(tài)碼能夠快速的讓我們知道錯(cuò)誤的內(nèi)容

那么在書(shū)寫(xiě)的時(shí)候要注意有四步驟:

// 1. 創(chuàng)建對(duì)象
var req = new XMLHttpRequest();

// 2. 準(zhǔn)備
        //    參數(shù)1: 獲取數(shù)據(jù)的方式锋喜, GET些己、POST
        //    參數(shù)2: 向服務(wù)器請(qǐng)求數(shù)據(jù)的地址 格式: 例如:    http://ip:8080/ajax/ajaxtest
        //    參數(shù)3: false 代表同步的方式請(qǐng)求數(shù)據(jù),true 代表異步
        // req.open("GET", "http://127.0.0.1:8080/ajax/ajaxtest", false);
req.open("GET", "http://127.0.0.1:8080/ajax/ajaxtest", false);

// 3. 發(fā)送請(qǐng)求
req.send();

// 4. 獲取數(shù)據(jù)
req.onreadystatechange = function() {
    if (req.readyState == 4) {
        if (req.status == 200) {
            // 200 說(shuō)明返回的數(shù)據(jù)是正常的
            var str = req.responseText;
        }
    }
}

然而這還沒(méi)有完嘿般,怎么辦呢段标?要鎖門(mén)了!
青山不改炉奴,綠水長(zhǎng)流逼庞,我們江湖再見(jiàn)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瞻赶,一起剝皮案震驚了整個(gè)濱河市赛糟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌砸逊,老刑警劉巖璧南,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異师逸,居然都是意外死亡司倚,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)字旭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人崖叫,你說(shuō)我怎么就攤上這事遗淳。” “怎么了心傀?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵屈暗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)养叛,這世上最難降的妖魔是什么种呐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮弃甥,結(jié)果婚禮上爽室,老公的妹妹穿的比我還像新娘。我一直安慰自己淆攻,他們只是感情好阔墩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瓶珊,像睡著了一般啸箫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伞芹,一...
    開(kāi)封第一講書(shū)人閱讀 49,821評(píng)論 1 290
  • 那天忘苛,我揣著相機(jī)與錄音,去河邊找鬼唱较。 笑死扎唾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绊汹。 我是一名探鬼主播稽屏,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼西乖!你這毒婦竟也來(lái)了狐榔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤获雕,失蹤者是張志新(化名)和其女友劉穎薄腻,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體届案,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡庵楷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了楣颠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尽纽。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖童漩,靈堂內(nèi)的尸體忽然破棺而出弄贿,到底是詐尸還是另有隱情,我是刑警寧澤矫膨,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布差凹,位于F島的核電站期奔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏危尿。R本人自食惡果不足惜呐萌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谊娇。 院中可真熱鬧肺孤,春花似錦、人聲如沸邮绿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)船逮。三九已至顾腊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挖胃,已是汗流浹背杂靶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酱鸭,地道東北人吗垮。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像凹髓,于是被迫代替她去往敵國(guó)和親烁登。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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