一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

AJAX請(qǐng)求的五個(gè)步驟及步驟詳解

 wenxuefeng360 2022-08-31 發(fā)布于四川

什么是AJAX?

AJAX全稱為“Asynchronous JavaScript and XML”(異步JavaScript和 XML),是一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。通過在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,Ajax可以使網(wǎng)頁實(shí)現(xiàn)異步更新。這意味著可以在不重新加載整個(gè)網(wǎng)頁的情況下,對(duì)網(wǎng)頁的某部分進(jìn)行更新。而傳統(tǒng)的網(wǎng)頁(不使用 Ajax)如果需要更新內(nèi)容,必需重載整個(gè)網(wǎng)頁面。

AJAX的工作原理

Ajax的工作原理相當(dāng)于在用戶和服務(wù)器之間加了一個(gè)中間層(AJAX引擎),使用戶操作與服務(wù)器響應(yīng)異步化??蛻舳税l(fā)送請(qǐng)求,請(qǐng)求交給xhr,xhr把請(qǐng)求提交給服務(wù)器,服務(wù)器進(jìn)行業(yè)務(wù)處理,服務(wù)器響應(yīng)數(shù)據(jù)交給xhr對(duì)象,xhr對(duì)象接收數(shù)據(jù),由javascript把數(shù)據(jù)寫到頁面上,如下圖所示: AJAX工作原理圖

AJAX請(qǐng)求的五個(gè)步驟

1.建立XMLHttpRequest對(duì)象;
2.設(shè)置回調(diào)函數(shù);
3.配置請(qǐng)求信息,(如open,get方法),使用open方法與服務(wù)器建立鏈接;
4.向服務(wù)器發(fā)送數(shù)據(jù);
5.在回調(diào)函數(shù)中針對(duì)不同的響應(yīng)狀態(tài)進(jìn)行處理;
復(fù)制代碼

1.創(chuàng)建XMLHttpRequest異步對(duì)象

var xhr;  //定義一個(gè)變量,用于存放XMLHttpRequest對(duì)象
if(window.XMLHttpRequest) { 
  // code for IE7+, Firefox, Chrome, Opera, Safari
  xhr = new XMLHttpRequest();
} else {
  // code for IE6, IE5
  xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
復(fù)制代碼

2.設(shè)置回調(diào)函數(shù)

xhr.onreadystatechange = callback;
復(fù)制代碼

3.使用open方法與服務(wù)器建立連接

// get 方式
xhr.open("get", "test.php", true)

// post 方式發(fā)送數(shù)據(jù) 需要設(shè)置請(qǐng)求頭
xhr.open("post", "test.php", true)
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
復(fù)制代碼

4.向服務(wù)器發(fā)送數(shù)據(jù)

// get 不需要傳遞參數(shù)
xhr.send(null)

// post 需要傳遞參數(shù)
xhr.send("name=jay&age=18")
復(fù)制代碼

5.在回調(diào)函數(shù)中對(duì)不同的響應(yīng)狀態(tài)進(jìn)行處理

function callback() {
  // 判斷異步對(duì)象的狀態(tài)
  if(xhr.readyState == 4) {
    // 判斷交互是否成功
    if(xhr.status == 200) {
      // 獲取服務(wù)器響應(yīng)的數(shù)據(jù)
      var res = xhr.responseText
      // 解析數(shù)據(jù)
      res = JSON.parse(res)
    }
  }
}
復(fù)制代碼
  • ajax中的五種狀態(tài)碼
    • 0:請(qǐng)求未初始化

    • 1:服務(wù)器連接已建立(已調(diào)用open方法,但還未調(diào)用send)

    • 2:請(qǐng)求已接收(已調(diào)用send方法)

    • 3:請(qǐng)求處理中(請(qǐng)求已到達(dá)服務(wù)端,正在處理)

    • 4:請(qǐng)求已完成,且響應(yīng)已就緒

    • 狀態(tài): 200——正確、404——未找到頁面、500——錯(cuò)誤

AJAX請(qǐng)求成功和失敗判斷

ajaxsuccesserror 方法根據(jù)響應(yīng)狀態(tài)碼來觸發(fā)。
當(dāng) XMLHttpRequest.status200 的時(shí)候,表示響應(yīng)成功,此時(shí)觸發(fā) success(). 其他狀態(tài)碼則觸發(fā) error()。

  • error判斷,請(qǐng)求失敗
    error: function (data) {
        var json =  JSON.stringify(data);
            alert(json);
    }
    復(fù)制代碼
    • 打印結(jié)果:
    【readyState】:
    0 - (未初始化)還沒有調(diào)用send()方法
    1 - (載入)已調(diào)用send()方法,正在發(fā)送請(qǐng)求
    2 - (載入完成)send()方法執(zhí)行完成,已經(jīng)接收到全部響應(yīng)內(nèi)容
    3 - (交互)正在解析響應(yīng)內(nèi)容
    4 - (完成)響應(yīng)內(nèi)容解析完成,可以在客戶端調(diào)用了
    復(fù)制代碼

完整的AJAX實(shí)例

// -----1.創(chuàng)建XMLHttpRequest對(duì)象,也就是創(chuàng)建一個(gè)異步調(diào)用對(duì)象
var xhr = new XMLHttpRequest();
// -----3. 創(chuàng)建一個(gè)新的HTTP請(qǐng)求,并指定該請(qǐng)求的方法、URL及驗(yàn)證信息
xhr.open('post','www.xxx.com',true)
// 接收返回值
// -----2、設(shè)置響應(yīng)HTTP請(qǐng)求狀態(tài)變化的函數(shù)------5.回調(diào)函數(shù)對(duì)不同狀態(tài)進(jìn)行處理
xhr.onreadystatechange = function(){    //xhr.onreadystatechange = callback;時(shí)間回調(diào)
  if(xhr.readyState === 4) {
    if(xhr.status >= 200 && xhr.status < 300 || CharacterData.status == 304) {
      console.log(xhr.responseText);
    }
  } 
}
// -----處理請(qǐng)求參數(shù)
postData = {"name1": "value1", "name2": "value2"};
postData = (function(value){
  var dataString = "";
  for(var key in value){
       dataString += key+"="+value[key]+"&";
  };
    return dataString;
}(postData));

// 設(shè)置請(qǐng)求頭
xhr.setRequestHeader("Content-type", "applicationx-www-form-urlencoded");
// 異常處理
xhr.onerror = function() {
  console.log('Network request failed')
}
// 跨域攜帶cookie
xhr.withCredentials = true;
// ----4.發(fā)出請(qǐng)求
xhr.send(postData);

復(fù)制代碼

參考文檔:參考文檔1參考文檔2

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    亚洲欧洲一区二区中文字幕| 日本在线高清精品人妻| 欧美精品女同一区二区| 精品香蕉一区二区在线| 色小姐干香蕉在线综合网| 久久精品亚洲情色欧美| 日本精品最新字幕视频播放 | 五月婷婷综合缴情六月| 亚洲精品av少妇在线观看| 亚洲中文字幕亲近伦片| av国产熟妇露脸在线观看| 亚洲精品国产精品日韩| 最近日韩在线免费黄片| 中字幕一区二区三区久久蜜桃| 日本免费熟女一区二区三区 | 日本不卡一本二本三区| 欧美又大又黄刺激视频| 熟女白浆精品一区二区| 久七久精品视频黄色的| 黑丝袜美女老师的小逼逼| 一区二区三区欧美高清| 久草精品视频精品视频精品 | 欧美日韩精品综合在线| 日本午夜精品视频在线观看| 熟女少妇一区二区三区蜜桃| 国产又长又粗又爽免费视频| 中国日韩一级黄色大片| 欧美日不卡无在线一区| 中文字幕日韩精品人一妻| 91亚洲国产日韩在线| 日韩精品一区二区毛片| 婷婷基地五月激情五月| 又大又紧又硬又湿又爽又猛| 99国产一区在线播放| 一区二区三区欧美高清| 国产成人亚洲精品青草天美 | 中文字幕一区二区熟女| 夫妻性生活黄色录像视频| 五月情婷婷综合激情综合狠狠| 日本午夜一本久久久综合| 欧洲偷拍视频中文字幕|