ajax請求失敗處理方式,ajax請求失敗怎麼處理

一、ajax介紹

ajax 是前後端交互的重要手段或橋樑。它不是一個技術,是一組技術的組合。

ajax :a:異步;j:js;a:和;x:服務端的數據。

ajax的組成:

  • 異步的 js 事件
  • 其他 js (處理解析數據)
  • XMLHttpRequest 對象
  • 數據(txt、json、xml、html)

通過後台與服務器進行少量數據交換,ajax可以使網頁實現異步更新。也就是在不需要重新加載整個網頁的情況下,能夠更新部分網頁的技術。傳統的網頁不使用ajax,如果需要更新內容,必須重新加載整個頁面。

前後端數據交互(二)——原生 ajax 請求詳解

ajax請求原理:創建一個網絡請求對象 -> 發送連接請求 -> 發送請求數據 -> 檢查網絡請求對象的狀態 -> 如果響應成功了 -> 瀏覽器接收返回數據並更新網頁。接下來詳細介紹對象的創建以及它的方法。

二、創建 XMLHttpRequest 對象

XMLHttpRequest 對象,用於後台與服務器之間的數據交換,意味着可以在不加載整個網頁的情況下,更新部分內容或數據。現代瀏覽器基本都支持,但是低版本的IE不支持,如果我們考慮IE兼容問題創建對象的時候需要兼容創建。

考慮兼容時創建的對象:

var xhr ;
if( window.XMLHttpRequest ){ //檢查瀏覽器是否支持XMLHttpRequest
 xhr = new XMLHttpRequest()
}else{
 xhr = new ActiveXObject("Microsoft.XMLHTTP") //兼容IE6  IE5
}

三、XMLHttpRequest的方法

3.1、open( )

設置請求的類型、請求接口、是否異步處理。

使用語法:open( method , url , async )

  • method:設置網絡請求的類型,常用的 get 和 post
  • url:設置請求的接口也就是服務器的地址
  • async:true時表示異步,false表示同步

3.2、send( )

將請求發送到服務器。

使用語法:send( string )

  • string,只用在請求方式是post時,發送給服務器的數據。數據是鍵值對格式的,如:”name=jack&pwd=1234″

使用發送方式不同的時候,傳輸數據添加方式也不同,所以我們介紹下分別為post和get時,數據是如何發送的?

3.3、提交方式

  • 使用 get 方式提交

get發送請求時,需要傳給後台的數據通過url來傳遞,多個參數之間使用 & 符號連接,使用時如下:

xhr.opn( "GET" , "1.php?name=hello&age=world" , true )
xhr.send()
  • 使用 post 方式提交

使用 post 方式發送請求時,使用send來發送數據,有時需要設置數據格式,類似表單那樣,此時可通過 setRequestHeader 設置發送的數據格式

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

Content-type常見類型:

  • text/plain 純文本,基本不怎麼用
  • application/x-www-form-urlcoded 鍵值對格式傳值,多個參數使用&連接
  • multipart/form-data 定界符,分隔各個數據,經常用於上傳文件

四、readyState 屬性

readyState 存有 XMLHttpRequest 的狀態,它的值從 0-4 發生變化,分別代表的意義:

  • 0:請求初始化,對象剛剛創建
  • 1:服務器已連接
  • 2:已發送,send發放已調用
  • 3:已接收,此時只接收了響應(response)頭部分
  • 4:已接收,此時接收響應(response)體信息

每當 readyState 狀態值發生改變時會,就會觸發 onreadystatechange 事件,對應着每個狀態值就會被觸發五次。當狀態值為 4 時表示網絡請求響應完畢,就可以獲取返回的值。

xhr.onreadystateChange = function(){
 if( xhr.readyState==4 ){
  if( xhr.status>=200 && xhr.status<300 || xhr.status==304 ){
   console.log("請求成功",xhr.responseXML)
  }else{
   console.log("請求失敗")
  }
 }
}

五、響應信息

通常我們需要獲取服務器返回的信息,然後對我們的網頁做相對應的結果展示,通常使用 XMLHttpRequest 的 responseText 或 responseXML 屬性。

responseText —> 獲取到的是字符串形式。接收到可直接使用,無需轉換。

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

responseXML —> 獲取到 XML 形式的數據。使用時需要解析,如:

<person>
 <name>小米粒</name>
 <age>18</age> 
</person> 
解析時:
document.getElementsByTagName("name")[0]

responseXML 目前已被 json 取代,所以作為了解就好。

六、ajax實例

var xhr ;
if( window.XMLHttpRequest ){
 xhr = new XMLHttpRequest()
}else{
 xhr = new ActiveXObject("Microsoft.XMLHTTP") //兼容IE6  IE5
}
xhr.open('GET','1.txt',true)
xhr.send()
xhr.onreadystatechange = function(){
 if(xhr.readyState==4){
  if(xhr.status>=200 && xhr.status<300 || xhr.status==304){
   console.log("請求成功",xhr.response) // 請求成功 abc
  }else{
   console.log("請求失敗")
  }
 }
}

1.txt 文檔內容為 abc。所以返回的結果也是abc

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/230024.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-10 13:17
下一篇 2024-12-10 13:17

相關推薦

發表回復

登錄後才能評論