站長資訊網
        最全最豐富的資訊網站

        ajax和fetch有什么區別

        區別:1、fetch沒有辦法原生監測請求的進度,而ajax基于原生的XHR開發,可以監測;2、和ajax相比,fetch有著更好更方便的寫法;3、fetch只對網絡請求報錯,對400、500都當做成功的請求,而ajax不會。

        ajax和fetch有什么區別

        本教程操作環境:windows7系統、jquery1.10.2版本、Dell G3電腦。

        ajax和fetch的區別 :

        (1)、ajax是利用XMLHttpRequest對象來請求數據的,而fetch是window的一個方法

        (2)、ajax基于原生的XHR開發,XHR本身的架構不清晰,已經有了fetch的替代方案

        (3)、fetch比較與ajax有著更好更方便的寫法

        (4)、fetch只對網絡請求報錯,對400,500都當做成功的請求,需要封裝去處理

        (5)、fetch沒有辦法原生監測請求的進度,而XHR可以

        ajax用法

        因為它原生的寫法很雞肋,所以大多會封裝下,導致可能很多人不會自己寫個ajax請求。都是用的JQuery或者Axios來請求數據的

        var xhr= new XMLHttpRequest(); // 新建XMLHttpRequest對象 xhr.onload= function(){ //請求完成   console.log(this.responseText); } // 發送請求: xhr.open('GET', '/user'); xhr.send();

        這樣一個請求就發出去了。很麻煩,發個簡單請求,還得寫這么多行代碼。 實際開發中當然不會這么寫,否則代碼冗余,可讀性差,用promise封裝一下

        var Ajax = {     get: function(url,fn){         // XMLHttpRequest對象用于在后臺與服務器交換數據         var xhr=new XMLHttpRequest();         xhr.open('GET',url,false);         xhr.onreadystatechange=function(){             // readyState == 4說明請求已完成             if(xhr.readyState==4){                 if(xhr.status==200 || xhr.status==304){                     console.log(xhr.responseText);                     fn.call(xhr.responseText);                 }             }         }         xhr.send();     },      // data應為'a=a1&b=b1'這種字符串格式,在jq里如果data為對象會自動將對象轉成這種字符串格式     post: function(url,data,fn){         var xhr=new XMLHttpRequest();         xhr.open('POST',url,false);         // 添加http頭,發送信息至服務器時內容編碼類型         xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');         xhr.onreadystatechange=function(){             if (xhr.readyState==4){                 if (xhr.status==200 || xhr.status==304){                     // console.log(xhr.responseText);                     fn.call(xhr.responseText);                 }             }         }         xhr.send(data);     } }

        代碼注釋:

        1、open(method, url, async) 方法需要三個參數:

        • method:發送請求所使用的方法(GET或POST);與POST相比,GET更簡單也更快,并且在大部分情況下都能用;然而,在以下情況中,請使用POST請求:

          ①無法使用緩存文件(更新服務器上的文件或數據庫)

          ②向服務器發送大量數據(POST 沒有數據量限制)

          ③發送包含未知字符的用戶輸入時,POST 比 GET 更穩定也更可靠

        • url:規定服務器端腳本的 URL(該文件可以是任何類型的文件,比如 .txt 和 .xml,或者服務器腳本文件,比如 .asp 和 .php (在傳回響應之前,能夠在服務器上執行任務));

        • async:規定應當對請求進行異步(true)或同步(false)處理;true是在等待服務器響應時執行其他腳本,當響應就緒后對響應進行處理;false是等待服務器響應再執行。

        2、send() 方法可將請求送往服務器。

        3、onreadystatechange:存有處理服務器響應的函數,每當 readyState 改變時,onreadystatechange 函數就會被執行。

        4、readyState:存有服務器響應的狀態信息。

        • 0: 請求未初始化(代理被創建,但尚未調用 open() 方法)

        • 1: 服務器連接已建立(open方法已經被調用)

        • 2: 請求已接收(send方法已經被調用,并且頭部和狀態已經可獲得)

        • 3: 請求處理中(下載中,responseText 屬性已經包含部分數據)

        • 4: 請求已完成,且響應已就緒(下載操作已完成)

        • 5.responseText:獲得字符串形式的響應數據。

        • 6.setRequestHeader():POST傳數據時,用來添加 HTTP 頭,然后send(data),注意data格式;GET發送信息時直接加參數到url上就可以,比如url?a=a1&b=b1。

        fetch用法

        1、第一個參數是URL
        2、第二個參數可選參數 可以控制不同的init對象
        3、使用了js 中的promise對象

        var arr1 = [{     name: "haha",     detail:"123" }];      fetch("url", {         method: "post",         headers: {//設置請求的頭部信息             "Content-Type": "application/json"             //跨域時可能要加上             //"Accept":"allication/json"         },    //將arr1對象序列化成json字符串         body: JSON.stringify(arr1)//向服務端傳入json數據     }).then(function(resp) {         resp.json().then((data) => {                              })     });

        所有的IE瀏覽器都不會支持 fetch()方法,服務器端返回 狀態碼 400 500的時候 不會reject

        【相關教程推薦:AJAX視頻教程】

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲精品高清在线| 久久精品人人做人人妻人人玩| 亚洲精品成人久久久| 国产福利视精品永久免费| 日韩精品在线播放| 亚洲精品私拍国产福利在线| 亚洲av永久无码精品古装片| 国产一区二区三区在线观看精品| 国产成人亚洲精品青草天美| 亚洲电影日韩精品| 91精品在线国产| 国产成人精品天堂| 欧美亚洲色综久久精品国产| 亚洲精品第一国产综合境外资源| 精品无码人妻久久久久久| 亚洲欧美日韩精品永久在线| 国产国拍亚洲精品mv在线观看| 日韩av无码久久精品免费| 久久人人超碰精品CAOPOREN| 国产成人精品一区二区三区| 国产亚洲福利精品一区| 97久久超碰国产精品旧版| 人妻少妇精品视频二区| 亚洲色精品88色婷婷七月丁香| 欧美激情精品久久久久久久九九九 | 日韩精品无码中文字幕一区二区 | 2022年国产精品久久久久| 中文字幕精品亚洲无线码二区| 青青青青久久精品国产h久久精品五福影院1421 | 精品视频第一页| 国产精品一二区| 好属妞这里只有精品久久| 国产精品麻豆高清在线观看| 国产AV国片精品有毛| 国产精品毛片无遮挡| 囯产精品一品二区三区| 999国内精品永久免费观看| 9久久9久久精品| 欧美视频精品一区二区三区 | 久久香蕉国产线看观看精品yw| 亚洲AV无码成人精品区蜜桃|