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

        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號
        主站蜘蛛池模板: 99re66在线观看精品免费| 久久久久亚洲精品中文字幕| 国产成人精品久久亚洲高清不卡 | 亚洲AV无码成人精品区大在线| 国产精品久久网| 日韩精品亚洲人成在线观看| 久久精品国产99久久香蕉| 国产精品欧美亚洲韩国日本| 午夜不卡久久精品无码免费| 久久国产精品一区| 国产国产成人久久精品| 好吊妞视频精品| 成人午夜视频精品一区| 久久精品国产99久久久| 一夲道无码人妻精品一区二区| 精品国产高清在线拍| 99RE8这里有精品热视频| 国内精品91最新在线观看| 国产精品一区二区久久国产| 亚洲Av永久无码精品三区在线| 欧美日韩精品一区二区视频| 国产中文在线亚洲精品官网| 88国产精品无码一区二区三区| 99精品久久久久中文字幕| 精品国产三级a∨在线欧美| 亚洲动漫精品无码av天堂| 亚洲av日韩精品久久久久久a| 亚洲国产精品第一区二区三区| 欧美在线精品永久免费播放| 九九久久精品国产| 久久久精品波多野结衣| 精品欧美小视频在线观看| 国产午夜精品理论片免费观看| 99国产精品私拍pans大尺度| 亚洲国产精品免费视频| 91精品国产自产在线观看| 国产国产成人久久精品| 精品精品国产欧美在线小说区| 精品乱码久久久久久夜夜嗨| 人妻少妇精品久久| 中文字幕av日韩精品一区二区|