Ajax與Comet-JavaScript高級程序設計第21章讀書筆記(2)

readyState屬性

發(fā)送Ajax異步請求之后喜爷,我們需要知道這個請求處于什么階段巨坊,此時灾票,我們可以檢測readyState屬性晋控,該屬性表示請求/響應過程的當前活動階段汞窗。它的可取值有如下幾種:

  • 0: 未初始化。 尚未調用 open() 方法赡译。
  • 1: 啟動仲吏。 已經調用open()方法,但蝌焚,尚未調用send()方法
  • 2: 發(fā)送裹唆。 已經調用send()方法,但只洒,尚未接收到響應
  • 3: 接收许帐。 已經接收到部分響應數據
  • 4: 完成。 已經接收到全部響應數據毕谴,而且已經可以在客戶端使用了成畦。

readyState屬性的每一次變化,都會觸發(fā)一次readyStateChange事件涝开,我們可以利用這個事件來檢測每次狀態(tài)變化后的readyState值循帐。通常,我們只對 readyState值為4的階段感興趣忠寻,因此惧浴,這個階段下,所有數據都已經準備就緒奕剃。

注意:onreadystatechange事件處理程序的指定衷旅,必須在調用open()方法之前,才能夠保證跨瀏覽器的兼容性

var xhr = new XMLHttpRequest(); 
// 之前我們提到過纵朋,這種寫法只支持到IE7+柿顶,如對低版本IE有特別要求,需要再做一些兼容處理

xhr.onreadystatechange = function(){
    if(xhr.readyState == 4){
        if( (xhr.status >= 200 && xhr.status < 300) || xhr.status == 304){
            alert(xhr.responseText);
        }
        else{
            alert('fail, ' + xhr.status);
        }
    }
}

xhr.open('get', 'example.txt', true);
xhr.send(null);

以上代碼利用DOM 0級方法為XHR對象添加了事件處理程序操软,原因是:并非所有瀏覽器都支持DOM 2級方法嘁锯。
本例中,onreadystatechange事件處理程序中,直接使用xhr對象家乘,而沒有使用this對象蝗羊,因為onreadystatechange事件處理程序的作用域問題,在此處使用this對象仁锯,會出錯耀找。

abort方法

接收到響應之前,可以調用 abort() 方法來取消異步請求业崖。

xhr.abort();

該方法被調用之后野芒,XHR對象會停止觸發(fā)事件,而且也不再允許訪問任何與響應相關的對象屬性双炕。在終止請求之后狞悲,還應該對XHR對象進行解引用操作。由于內存原因妇斤,不建議重用XHR對象摇锋。

HTTP頭部信息

XHR對象提供了操作頭部信息的方法,包括對請求頭部和響應頭部的操作站超。

默認情況下乱投,發(fā)送XHR請求的同時,還會發(fā)送以下頭部信息:

  • Accept: 瀏覽器能夠處理的內容類型
  • Accept-Charset: 瀏覽器能夠顯示的字符集
  • Accept-Encoding: 瀏覽器能夠處理的壓縮編碼
  • Accept-Language: 瀏覽器當前設置的語言
  • Connection: 瀏覽器與服務器之間的連接類型
  • Cookie: 當前頁面的任何Cookie
  • Host: 發(fā)出請求的頁面顷编,所在的域
  • Referer: 發(fā)出請求的頁面的URI戚炫。注:HTTP規(guī)范把這個單詞拼錯了,如今一直沿用媳纬。正確應該是 referrer
  • User-Agent: 瀏覽器的用戶代理字符串

setRequestHeader()

setRequestHeader()方法的調用双肤,必須在open()方法調用之后,并且在send()方法調用之前钮惠。該方法接收2個參數:頭部字段的名稱茅糜、頭部字段的值。比如:

xhr.open('get', 'example.txt', true);
xhr.setRequestHeader("MySite", "4455q.com");
xhr.send(null);

建議使用自定義的頭部信息素挽,而不是去重寫默認的頭部信息蔑赘,因為,部分瀏覽器不允許這樣的操作预明。

getResponseHeader()

getResponseHeader方法可以取得響應頭部信息缩赛,該方法接收的參數就是頭部字段名稱。

var mySite = xhr.getResponseHeader('MySite');
// 4455q.com

getAllResponseHeaders()

var allHeaders = xhr.getAllResponseHeaders();

在服務器端撰糠,也可以利用頭部信息向瀏覽器發(fā)送額外的結構化數據酥馍。
在沒有自定義信息的情況下,getAllResponseHeaders() 方法通常會返回如下所示的多行文本內容:

Date: Sun, 14 Nov 2004 18:04:22 GMT
Server: Apache/1.3.29 (Unix)
Vary: Accept
X-Powerd-By: PHP/4.3.8
Connection: close
Content-Type: text/html; charset=iso-8859-1

原文鏈接:http://www.4455q.com/ajax-comet-javascript-chapter21-note2.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末阅酪,一起剝皮案震驚了整個濱河市旨袒,隨后出現(xiàn)的幾起案子汁针,更是在濱河造成了極大的恐慌,老刑警劉巖砚尽,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件施无,死亡現(xiàn)場離奇詭異,居然都是意外死亡必孤,警方通過查閱死者的電腦和手機帆精,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隧魄,“玉大人,你說我怎么就攤上這事隘蝎」鹤模” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵嘱么,是天一觀的道長狮含。 經常有香客問我,道長曼振,這世上最難降的妖魔是什么几迄? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮冰评,結果婚禮上映胁,老公的妹妹穿的比我還像新娘。我一直安慰自己甲雅,他們只是感情好解孙,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抛人,像睡著了一般弛姜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妖枚,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天廷臼,我揣著相機與錄音,去河邊找鬼绝页。 笑死荠商,一個胖子當著我的面吹牛,可吹牛的內容都是我干的续誉。 我是一名探鬼主播结啼,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屈芜!你這毒婦竟也來了郊愧?” 一聲冷哼從身側響起朴译,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎属铁,沒想到半個月后眠寿,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡焦蘑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年盯拱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片例嘱。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡狡逢,死狀恐怖,靈堂內的尸體忽然破棺而出拼卵,到底是詐尸還是另有隱情奢浑,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布腋腮,位于F島的核電站雀彼,受9級特大地震影響,放射性物質發(fā)生泄漏即寡。R本人自食惡果不足惜徊哑,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望聪富。 院中可真熱鬧莺丑,春花似錦、人聲如沸墩蔓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钢拧。三九已至蟹漓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間源内,已是汗流浹背葡粒。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留膜钓,地道東北人嗽交。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像颂斜,于是被迫代替她去往敵國和親夫壁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內容