整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript實戰001:XMLHttpReq

          JavaScript實戰001:XMLHttpRequest使用入門

          MLHttpRequest簡介

          XMLHttpRequest是由微軟提出的一個API接口,目的是為客戶端提供與服務器之間傳輸數據的功能。XMLHttpRequest的特點是可以按需請求、局部刷新,不僅提高了服務器響應速度還可以避免不必要的寬帶浪費。XMLHttpRequest提供了一個通過URL來獲取數據的簡單方式,通過它可以很容易的獲取到URL上所有類型的資源數據。

          XMLHttpRequest是什么

          XMLHttpRequest 是一個JavaScript對象,得到了所有現代瀏覽器(Chrom、IE7+、Firefox、Safari 以及 Opera等)較好的支持并內建了XMLHttpRequest 對象,它定義了很多方法和屬性方便用戶配置發送各種請求。比如說可以設置請求的超時時間、獲取請求進度信息、設置請求數據類型等,發送GET、POST、DELETE、HEAD、PUT等各種HTTP請求。

          XMLHttpRequest對象方法

          XMLHttpRequest對象創建可以通過new XMLHttpRequest()來實現,一個請求的實現至少需要使用open和send方法的使用。XMLHttpRequest支持以下幾種方法,需要注意的是setRequestHeader()方法指定了HTTP請求的頭部信息,需要在請求初始化之后發送之前定義。

          XMLHttpRequest對象屬性

          onreadystatechange是一個事件句柄函數,當readyState屬性發生變化時被調用以改變XMLHttpRequest 的狀態。我們可以通過獲取該對象的屬性來分析請求的狀態并做出相應的操作決策,也可以幫助開發者快速定位錯誤因素。

          XMLHttpRequest監聽事件

          XMLHttpRequest對象提供了一系列監聽事件來獲取請求的當前狀態,每個請求都以loadstart事件開始,以 loadend 事件結束。在這兩個事件中間可以注冊響應的監聽事件來獲取傳輸的狀態,比如通過onprogress獲取上傳文件的進度,那么我們就可以注冊一個onprogress 事件來監聽當前進度。

          xhr.upload.onprogress=e=>{
            if (e.lengthComputable) {
              var progress=e.loaded / e.total;
            }
          }

          發送GET請求接收二進制數據

          這里我寫了一個簡單的頁面載入時發送一個請求的示例,通過GET方法來獲取后臺的文件。在發送請求時可以設置一些請求頭部信息,比如content-type、connection、cookie等信息。xhr提供了setRequestHeader來允許我們修改請求頭部信息,第一個參數為請求頭參數,第二個參數為對應的參數值。我們還可以指定接受返回的數據類型,xhr可以通過responseType屬性指定數據類型為blob。老版本的 Internet Explorer不支持 XMLHttpRequest 對象,所以我們先檢查瀏覽器是否支持 XMLHttpRequest 對象,如果不支持的話可以創建 ActiveXObject 對象。

          發送POST請求上傳文件

          XMLHttpRequest新增formData對象,不僅可以發送文本數據還可以上傳文件。這里我嘗試實現文件上傳功能,將二進制文件追加到formData對象,在發送的時候我們將formData對象提交即可。

          JavaScript中,你可以使用`fetch` API或者`XMLHttpRequest`對象來發送HTTP請求。以下是兩種方法的示例:


          **使用fetch API發送HTTP請求**


          fetch API是現代瀏覽器中推薦使用的方法,因為它提供了更簡潔的API,并且支持跨域請求。


          ```javascript

          fetch('https://api.example.com/data', {

          method: 'GET', // 或者 'POST'

          headers: {

          'Content-Type': 'application/json',

          },

          })

          .then(response=> response.json()) // 解析響應數據為JSON

          .then(data=> console.log(data)) // 在控制臺打印數據

          .catch((error)=> console.error('Error:', error)); // 捕獲錯誤并打印

          ```

          **使用XMLHttpRequest發送HTTP請求**


          如果你需要更多的控制權,或者在舊的瀏覽器中使用,你可以使用`XMLHttpRequest`對象。但是請注意,由于瀏覽器的同源策略,`XMLHttpRequest`通常僅用于同一域的請求。


          ```javascript

          var xhr=new XMLHttpRequest();

          xhr.open('GET', 'https://api.example.com/data', true);

          xhr.onreadystatechange=function () {

          if (xhr.readyState==4 && xhr.status==200)

          console.log(JSON.parse(xhr.responseText));

          }

          xhr.send();

          ```

          以上兩種方法都可以發送HTTP請求,但請注意,由于安全性和隱私性的考慮,通常建議盡可能使用fetch API進行跨域請求。此外,請確保服務器已經正確配置了HTTP頭信息以允許跨域請求。

          MLHTTPrequest 對象

          Ajax 的核心是 JavaScript 對象 XmlHTTPRequest。該對象在 Internet Explorer 5 中首次引入,它是一種支持異步請求的技術。簡而言之,XmlHTTPRequest 使您可以使用 JavaScript 向服務器提出請求并處理響應,而不阻塞用戶。通過 XMLHTTPRequest 對象,Web 開發人員可以在頁面加載以后進行頁面的局部更新。

          方法

          open(String method,String url,boolean asynch,String username,String password)

          send(content)

          setRequestHeader(String header,String value)

          getAllResponseHeaders()

          getResponseHeader(String header)

          abort()

          常用詳細解析

          open():該方法創建 HTTP 請求

          第一個參數是指定提交方式(post、get)

          第二個參數是指定要提交的地址是哪

          第三個參數是指定是異步還是同步(true 表示異步,false 表示同步)

          第四和第五參數在 HTTP 認證的時候會用到,是可選的。

          setRequestHeader(String header,String value):設置消息頭(使用 post 方式才會使用到,

          get 方法并不需要調用該方法)。

          xmlHTTP.setRequestHeader("Content-type","application/x-www-form-urlencoded");

          send(content):發送請求給服務器

          如果是 get 方式,并不需要填寫參數,或填寫 null,如果是 post 方式,把要提交的參數寫上去。

          常用屬性

          onreadystatechange:請求狀態改變的事件觸發器(readyState 變化時會調用此方法),一般用于指定回調函數。

          readyState:請求狀態 readyState 一改變,回調函數被調用,它有 5 個狀態:

          0:未初始化

          1:open 方法成功調用以后

          2:服務器已經應答客戶端的請求

          3:交互中。HTTP 頭信息已經接收,響應數據尚未接收。

          4:完成。數據接收完成

          responseText:服務器返回的文本內容

          responseXML:服務器返回的兼容 DOM 的 XML 內容

          status:服務器返回的狀態碼

          statusText:服務器返回狀態碼的文本信息

          回調函數是什么

          回調函數就是接收服務器返回的內容!


          主站蜘蛛池模板: 色狠狠色狠狠综合一区| 美女福利视频一区二区 | 亚洲综合无码精品一区二区三区 | 精品一区二区三区无码免费直播 | 无码人妻精品一区二区蜜桃百度| 久久一区不卡中文字幕| 亚洲国产一区明星换脸| 无码丰满熟妇浪潮一区二区AV| 亚洲一区二区三区四区视频| 久久精品一区二区| 国产一区二区三区在线观看精品 | 国产一区二区三区91| 一区免费在线观看| 亚洲国产综合精品一区在线播放| 欧美日本精品一区二区三区| 亚州AV综合色区无码一区 | 国产一区二区在线观看app| 一区二区三区观看| 精品一区二区三区免费观看| 亚洲一区无码精品色| 国产精品亚洲不卡一区二区三区 | 无码人妻一区二区三区兔费| 亚洲国产一区在线观看| 91在线视频一区| 成人精品一区二区户外勾搭野战| 国产福利一区二区三区视频在线| 国产成人精品日本亚洲专一区| 国产精品揄拍一区二区久久| 国产精品乱码一区二区三| 在线观看国产一区亚洲bd| 精品理论片一区二区三区| 精品乱人伦一区二区| 亚洲一区二区视频在线观看| 国产在线精品一区二区高清不卡| 久久国产高清一区二区三区| 久久福利一区二区| 亚洲AV无码一区二区三区电影 | 亚洲一区精品无码| 亚洲国产一区二区三区青草影视| 精品欧洲av无码一区二区14| 亚洲AV无码一区二区三区性色|