ajax的理解與工作流程
一、什麼是ajax
ajax是一種非同步通訊技術。在ajax出現之前,客戶端與服務端之間直接通訊。引入ajax之後,客戶端與服務端加了一個第三者--ajax。有了ajax之後,通過在後臺與伺服器進行少量資料交換,可以達到在不重新整理整個頁面的情況下實現區域性重新整理。其原理如圖
二、XHR物件
ajax技術的核心是XMLHttpRequest物件(簡稱XHR)。IE7+、FireFox、Opera、Chrome和Safari都支援原生的XHR物件,建立XHR物件可以這樣寫
var xhr = new XMLHttpRequest();
那如果要相容IE6、7又該怎麼寫
varxhr = new ActiveXObject("MSXML2,XMLHTTP");
因此相容寫法如下
1 if(window.ActiveXObject) { 2 var xhr = new ActiveXObject("MSXML2,XMLHTTP"); 3 } else { 4 var xhr = new XMLHttpRequest(); 5 }
三、XHR用法
建立完XHR物件後,要呼叫open()方法建立請求,open()方法接受三個引數:
1.要傳送的請求的型別(如"get"、"post"等)
2.請求的URL
3.表示是否非同步傳送請求的布林值(預設為true,表示非同步)
xhr.open("get","index.php",true);
post()請求方法如下面程式碼
xhr.open("get","index.php",true); //post()方法必須在send()方法之前加上下面這段程式碼 xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
說明一點:URL相對於執行程式碼的當前頁面,也可以用絕對路徑
準備工作做好後,呼叫send()方法傳送請求,
xhr.send(null);
這裡get方法傳輸的資料已經放到url中,可以將引數設定為null
在呼叫send()方法後,請求就會被分派到伺服器,onreadychange捕獲請求的狀態碼,並進行檢測
onreadychange物件有個readyState屬性,該屬性的值表示當前的活動階段,其值有如下幾個:
0:未初始化。尚未呼叫open()方法
1:啟動。已經呼叫open()方法,但尚未呼叫send()方法
2:傳送。已經呼叫send()方法,但尚未接收到響應
3:接收。已經接受到部分響應資料
4:完成。已經接受到全部響應資料,並且可以在客戶端使用
我們只需判斷readyState的值是否為4就可以知道所有資料已經就緒。
1 xhr.onreadystatechange = function(){ 2 if (xhr.readyState==4) { 3 //判斷狀態碼是否成功 4 if (xhr.status>=200&&xhr.status<=207||xhr.status==304) { 5 //呼叫ajax的responseText屬性返回資料 6 alert(xhr.responseText); 7 }else{ 8 alert(xhr.status); 9 } 10 }
四、總結
原生ajax的請求總結為一下六個步驟
1.建立XHR物件
2.呼叫open()方法建立請求
3.呼叫send()方法傳送請求
4.onreadychange捕獲請求的狀態碼
5.判斷狀態嗎是否成功
6.呼叫ajax的responseText屬性返回資料
相關推薦
ajax的理解與工作流程
一、什麼是ajax ajax是一種非同步通訊技術。在ajax出現之前,客戶端與服務端之間直接通訊。引入ajax之後,客戶端與服務端加了一個第三者--ajax。有了ajax之後,通過在後臺與伺服器進行少量資料交換,可以達到在不重新整理整個頁面的情況下實現區域性重新整理。其
Docker架構與工作流程
Docker架構分為: docker host:執行docker daemon的主機 docker client:對容器進行create… 一個host可以啟動多個容器,基於映象可在容器中啟動不同的應用。如果本地無此映象,docker可自動連線到docker registry
淺談SpringMVC之架構與工作流程
MVC模式是在Java的Web應用開發中非常常用的模式。MVC全名是Model View Controller,是模型(model)-檢視(view)-控制器(controller)的縮寫,一種軟體設計典範,用一種業務邏輯、資料、介面顯示分離的方法組織程式碼,將
JVM原理與工作流程
作為一名Java使用者,掌握JVM的體系結構也是必須的。說起Java,人們首先想到的是Java程式語言,然而事實上,Java是一種技術,它由四方面組成:Java程式語言、Java類檔案格式、Java虛擬機器和Java應用程式介面(Java API)。它們的關係如下圖所示:執行
apache php mysql 怎麼理解他們工作流程
知道他們各自是什麼還不知道他們怎麼一起工作? - - 1、apache是伺服器基礎,php和mysql都需要他來協調工作 2、php是指令碼解釋,如果不用php那麼apache出來的東西就只是靜態的,而不能在伺服器實現功能 3、mysql是資料庫,完全可以單獨使用,但是和另
Yarn通訊協議與工作流程
一. Yarn通訊協議 在 YARN 中,任何兩個需相互通訊的元件之間僅有一個 RPC 協議,而對於任何一個 RPC 協議,通訊雙方有一端是 Client,另一端為 Server,且 Client 總
Apache Druid 的叢集設計與工作流程
> 導讀:本文將描述 Apache Druid 的基本叢集架構,說明架構中各程序的作用。並從資料寫入和資料查詢兩個角度來說明 Druid 架構的工作流程。 關注公眾號 MageByte,設定星標點「在看」是我們創造好文的動力。公眾號後臺回覆 “加群” 進入技術交流群獲更多技術成長。 Druid 是多
accp8.0轉換教材第10章Ajax和jQuery理解與練習
put else win send jquery實現 servlet ews window 8.0 C/S (Client/Server)結構,即大家熟知的客戶機和服務器結構。 B/S(Browser/Server)結構即瀏覽器和服務器結構。 認識ajax 、XMLHttp
機器學習(二)工作流程與模型調優
發生 較高的 mode lan 包含 因此 增加 絕對值 輸入 上一講中主要描述了機器學習特征工程的基本流程,其內容在這裏:機器學習(一)特征工程的基本流程 本次主要說明如下: 1)數據處理:此部分已經在上一節中詳細討論 2)特征工程:此部分已經在上一節中詳細討論
理解與使用Promise完成復雜異步處理流程
解決 分享 一輪 思路 可能 ++ new solved HR 文章原文連接地址:https://blog.csdn.net/qq120848369/article/details/53204435 本文談到的Promise是指javascript環境下的Promise
XtraBackup全備工作流程解讀與總結
備份 XtraBackup 背景 出於對XtraBackup工作原理好奇,做了下面的日誌解讀 工作流程解讀 [root@node1 09:23:35 /root] #time innobackupex --defaults-file=/data/mysql/mysql3306/my3306.cnf -
Struts2工作原理與Struts2工作流程
Struts2官方工作原理圖 Struts2的工作原理: 1.客戶端初始化一個紙箱Servlet容器(比如Tomcat)的請求。 2.HttpServletRequest請求經過一系列的Filter(過濾器)。 (這些過濾器中有個ActionContextCleanU
SSM工作流程的大致理解
//不是根據原始碼來理解的,所以細節有省略.. 首先從在瀏覽器輸入URl的那一刻開始 例如輸入 localhost:8080/MyProject/listCategory 初始化: 此時tomcat已經啟動,於是tomcat將請求交給相應的Servlet去執行 這裡可以看到web.xml,裡面有一
使用Git與Gitlab開發工作流程
一.git常用命令 1.git init 2.git add <file> 3.git commit 4.git statu
理解zip函式的工作流程
zip函式是Python的內建函式,在拙作《跟老齊學Python:輕鬆入門》有一定的介紹,但是,考慮到那本書屬於Python的入門讀物,並沒有講太深。但是,並不意味著這個函式不能應用的很深入,特別是結合迭代器來理解此函式,會讓人有豁然開朗的感覺。同時,能夠巧妙地解決某些問題。 本文試圖對zip進行深入探討,
OpenStack 網路總結之:理解GRE隧道的工作流程
文章背景 Openstack的網路配置複雜多樣,本文講述的流程只符合以下場景: 網路型別為GRE隧道 單獨的網路控制節點; 流程介紹 下面是簡單的流程圖 下面是各個部分包含的PORT 下面章節的名稱中會包含圖中關鍵點的編號 計算節點:例項網路 (A,B,C) 所有發出的資料包都是從例
Activiti 7.0.98 釋出,業務流程管理與工作流系統
Activiti 7.0.98 釋出了,Activiti 是一個業務流程管理(BPM)和工作流系統,適用於開發人員和系統管理員。其核心是超快速、穩定的 BPMN2 流程引擎。它易於與 Spring 整合使用。 更新內容包括: 改變 AsyncTaskTest.test
理解與使用Promise完成複雜非同步處理流程
本文談到的Promise是指javascript環境下的Promise,然而Promise這個功能在若干語言中均有實現,我本次會在Nodejs服務端環境下進行學習和理解。 Promise是為了解決日趨複雜的非同步程式設計而出現的,簡單的非同步例如:發起一個ajax請求來
struts2核心工作流程與原理
1. Struts2架構圖 這是Struts2官方站點提供的Struts 2 的整體結構。2. Struts2部分類介紹 這部分從Struts2參考文件中翻譯就可以了。 ActionMapper ActionMapper其實是HttpServletRequ
WordCount工作流程分析與總結
筆記目的: 1.總結分析MapReduce的基本流程 2.總結分析WordCount的工作流程 3.總結分析程式碼WordCount程式碼 筆記時間: 2012年10月10日 By Yikun Mail:[email protected] 1關於MapReduce