異步請求(ajax,http) 之 逐漸完善的大全

異步請求在咱們的開發之中是常常須要學習和理解的內容,咱們將會在這一篇文章中依據不一樣的語言和環境內容進行歸類講解。jquery

 

JS:ajax

  ajax是咱們最爲經常使用的頁面異步請求,在只須要修改部分頁面內容而不須要更換所有頁面的時候,咱們經常經過ajax來進行內容的請求部份內容。ajax最先是google公司進行推行的內容。使用異步請求,首先其不會阻塞咱們的代碼內容,返回的內容能夠經過乾煸頁面部分的內容的方式來修改展現並減小相關,資源的消耗。json

  咱們這裏先來使用原生的內容來梳理一下ajax請求內容。服務器

  js之中咱們的ajax是經過xmlHttpRequest來進行實現的。xmlHTTPrequest能夠用於獲取任何的數據內容,並不必定是xml,其還支持http之外的協議(ftp)。app

  (這邊順道提一下。若是您的通訊須要從服務器接收事件或消息數據,請考慮經過EventSource接口使用 server-sent events。對於 full-duplex 通訊, WebSockets 多是更好的選擇。)異步

  咱們接下來經過代碼的方式來看一看xmlHttpRequest到底能夠爲咱們達成哪些內容。函數

  由上面可見咱們經過XMLHttpRequest能夠獲取許多的信息內容,咱們能夠經過這些信息來實時的獲取當前的請求的狀態。同時咱們能夠總結一下請求的各個階段的一個具體排布。學習

下面咱們再來看一看相關的函數內容。google

依據提供的函數內容咱們接着能夠將上面的流程圖內容進行必定的完善了。上圖以下。spa

 

 下面來一段示例代碼吧:

var httpReq = function(){ var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(e){ if(xhr.readyState == 0){ console.log("當前的狀態是建立代理, readyState:0"); } else if(xhr.readyState == 1){ console.log("當前的狀態是打開代理, readyState:1"); } else if(xhr.readyState == 2){ console.log("當前的狀態是請求已經發送, readyState:2"); } else if(xhr.readyState == 3){ console.log("當前的狀態是響應已經到達, readyState:3"); } else if(xhr.readyState == 4){ console.log("當前的狀態是請求結束,響應下載完成, readyState:4"); console.log(xhr.getResponseHeader()); } } xhr.timeout = 10000; //設置請求最大時長,超過期長以後將會自動結束當前請求。
    //表示的是在超時以後自動調用的事件內容。從XMLHttpRequestEventTarget繼承而來的事件內容。
    xhr.ontimeout = function(e){ xhr.abort(); } xhr.open('POST',"http://127.0.0.1:8080"); xhr.setRequestHeader("Content-Type", "application/json"); xhr.send(); } httpReq();

接下來咱們來看一看JQuery的ajax之中的內容,看看它是怎麼寫xmlHttpRequest的吧。

jquery之中xhr.js文件內容存儲在 src/ajax/var 路勁之下。

相關文章
相關標籤/搜索