1. 程式人生 > >ajax的理解與工作流程

ajax的理解與工作流程

一、什麼是ajax

ajax是一種非同步通訊技術。在ajax出現之前,客戶端與服務端之間直接通訊。引入ajax之後,客戶端與服務端加了一個第三者--ajax。有了ajax之後,通過在後臺與伺服器進行少量資料交換,可以達到在不重新整理整個頁面的情況下實現區域性重新整理。其原理如圖

二、XHR物件

ajax技術的核心是XMLHttpRequest物件(簡稱XHR)。IE7+、FireFox、Opera、Chrome和Safari都支援原生的XHR物件,建立XHR物件可以這樣寫

var xhr = new XMLHttpRequest();

那如果要相容IE6、7又該怎麼寫

var
xhr = 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,裡面有一

使用GitGitlab開發工作流程

一.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