PHP編程實(shí)戰(zhàn)15.2.3 Ajax的同步和異步事件

<!--PHP編程實(shí)戰(zhàn)-->
<!--JSON & Ajax -->
<!--15-3-->
<!--在JavaScript中創(chuàng)建XMLHttpRequest對(duì)象-->
<script type="text/javascript">
    var xhr=new XMLHttpRequest();
</script>
  • 請(qǐng)求方法: {"GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS"}之一
  • URL: 請(qǐng)求的URL. 可以是PHP JavaScript HTML i純文本或者其他的文件類型
  • 異步的(可選): 默認(rèn)為true,表示非阻塞調(diào)用.
  • 用戶名(可選): 請(qǐng)求的服務(wù)器需要驗(yàn)證身份時(shí)候的用戶名.
  • 密碼(可選): 請(qǐng)求的服務(wù)器需要驗(yàn)證身份時(shí)候的密碼.

同步調(diào)用

沒有監(jiān)聽,JavaScript代碼會(huì)等到服務(wù)器響應(yīng)之后再繼續(xù)執(zhí)行袍患。在收聽到響應(yīng)后历葛,響應(yīng)的數(shù)據(jù)會(huì)自動(dòng)填充XHR對(duì)象的屬性缝龄,相關(guān)的屬性簡介如下:

  • responseText:作為響應(yīng)主題被返回的文本。
  • reponseXML:如果響應(yīng)的內(nèi)容類型是“text/xml”或“application/xml”域那,這個(gè)屬性中將保存包含著響應(yīng)數(shù)據(jù)的XML DOM文檔。
  • status:響應(yīng)的HTTP狀態(tài)的說明。
  • statusText:HTTP狀態(tài)的說明宪肖。
應(yīng)該像下面這樣檢查同步請(qǐng)求的狀態(tài)碼
xhr.open("get", "example.txt", false);
xhr.send(null);
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {    
  alert(xhr.statusText);
} else {    
  alert("Request was unsuccessful: " + xhr.status);
}

通過檢測(cè)status來解決下一步的操作疯搅,不要依賴statusText濒生,因?yàn)楹笳咴诳鐬g覽器使用時(shí)不太可靠。

異步調(diào)用 onreadystatechange回調(diào)函數(shù)監(jiān)聽

檢測(cè)XHR對(duì)象的readyState屬性
  • 0:為初始化幔欧。尚未調(diào)用open()方法罪治。
  • 1:啟動(dòng)。已經(jīng)調(diào)用open()方法琐馆,但尚未調(diào)用send()方法规阀。
  • 2:發(fā)送。已經(jīng)調(diào)用send()方法瘦麸,但尚未接收到相應(yīng)谁撼。
  • 3:接受。已經(jīng)接受到部分相應(yīng)的數(shù)據(jù)滋饲。
  • 4:完成厉碟。已經(jīng)接受到全部相應(yīng)數(shù)據(jù),而且已經(jīng)可以在客戶端使用了屠缭。
必須在調(diào)用open()之前指定onreadystatechange事件處理程序才能確惫抗模跨瀏覽器兼容性。這里采用跨瀏覽器安全的DOM0級(jí)方法
var xhr = createXHR();
xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {
        if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {
            alert(xhr.statusText);
        } else {
            alert("Request was unsuccessful: " + xhr.status);
        }
    }
};
xhr.open("get", "example.txt", true);
xhr.send(null);

參考: http://www.w3cmm.com/ajax/xmlhttprequest.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末呵曹,一起剝皮案震驚了整個(gè)濱河市款咖,隨后出現(xiàn)的幾起案子何暮,更是在濱河造成了極大的恐慌,老刑警劉巖铐殃,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件海洼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡富腊,警方通過查閱死者的電腦和手機(jī)坏逢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赘被,“玉大人是整,你說我怎么就攤上這事∶窦伲” “怎么了浮入?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長阳欲。 經(jīng)常有香客問我舵盈,道長,這世上最難降的妖魔是什么球化? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任秽晚,我火速辦了婚禮,結(jié)果婚禮上筒愚,老公的妹妹穿的比我還像新娘赴蝇。我一直安慰自己,他們只是感情好巢掺,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布句伶。 她就那樣靜靜地躺著,像睡著了一般陆淀。 火紅的嫁衣襯著肌膚如雪考余。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天轧苫,我揣著相機(jī)與錄音楚堤,去河邊找鬼。 笑死含懊,一個(gè)胖子當(dāng)著我的面吹牛身冬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播岔乔,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼酥筝,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了雏门?” 一聲冷哼從身側(cè)響起嘿歌,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤掸掏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后搅幅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阅束,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年茄唐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝇更。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沪编,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出年扩,到底是詐尸還是另有隱情蚁廓,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布厨幻,位于F島的核電站相嵌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏况脆。R本人自食惡果不足惜饭宾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望格了。 院中可真熱鬧看铆,春花似錦、人聲如沸盛末。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悄但。三九已至棠隐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間檐嚣,已是汗流浹背助泽。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留净嘀,地道東北人报咳。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像挖藏,于是被迫代替她去往敵國和親暑刃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

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

  • AJAX 原生js操作ajax 1.創(chuàng)建XMLHttpRequest對(duì)象 var xhr = new XMLHtt...
    碧玉含香閱讀 3,212評(píng)論 0 7
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理膜眠,服務(wù)發(fā)現(xiàn)岩臣,斷路器溜嗜,智...
    卡卡羅2017閱讀 134,696評(píng)論 18 139
  • 本文詳細(xì)介紹了 XMLHttpRequest 相關(guān)知識(shí),涉及內(nèi)容: AJAX架谎、XMLHTTP炸宵、XMLHttpReq...
    semlinker閱讀 13,669評(píng)論 2 18
  • ajax作為前端開發(fā)必需的基礎(chǔ)能力之一,你可能會(huì)使用它谷扣,但并不一定懂得其原理土全,以及更深入的服務(wù)器通信相關(guān)的知識(shí)。在...
    蕭玄辭閱讀 828評(píng)論 0 0
  • Ajax:Asynchronous JavaScript + XML的簡寫会涎。Ajax技術(shù)的核心是XMLHttpRe...
    exialym閱讀 878評(píng)論 0 8