本篇文章主要的講述了關於ajax的使用流程情況,還有關於ajax的記憶方法,現在我們一起來閱讀本篇文章吧
AJAX使用流程及記憶方法
此記憶方法可能不算好,如果覺得不適合你,可以另外重新想一個。
new XMLHttpRequest();
--- 收到一個新的快遞
open('Methor',url,true);
--- 你迫不及待地打開
send();
--- 發現你的東西有問題,就給送回去了
function onload(){}
--- 賣家處理你的快遞
#responseText
--- 處理後,再把快遞給你回傳
要完整實作一個AJAX異步呼叫和局部刷新,通常需要以下幾個步驟:
(1)建立XMLHttpRequest物件,也就是建立一個非同步呼叫物件.
(2)建立一個新的HTTP請求,並指定該HTTP請求的方法、URL及驗證資訊
(3)設定回應HTTP請求狀態變化的函數.
(4)傳送HTTP請求.
(5)以取得非同步呼叫返回的資料.
(5)以取得非同步呼叫返回的資料.
# (6)使用JavaScript和DOM實現局部刷新.
1、建立XMLHttpRequest物件不同的瀏覽器所使用的非同步呼叫物件也有所不同,在IE瀏覽器中非同步呼叫使用的是XMLHTTP元件中的XMLHttpRequest物件,而在Netscape、Firefox瀏覽器中則直接使用XMLHttpRequest元件。因此,在不同瀏覽器中建立XMLHttpRequest物件的方式都有所不同.
在IE瀏覽器中建立XMLHttpRequest物件的方式如下所示:
# var xmlHttpRequest = new ActiveXObject(" Microsoft.XMLHTTP");
在Netscape瀏覽器中建立XMLHttpRequest物件的方式如下所示:
### var xmlHttpRequest = new XMLHttpRequest();###由於無法確定使用者使用的是什麼瀏覽器,所以在建立XMLHttpRequest物件時,最好將以上兩種方法都加上.如以下程式碼所示:
<title>创建XMLHttpRequest对象</title> <script> <!-- var xmlHttpRequest; //定义一个变量,用于存放XMLHttpRequest对象 function createXMLHttpRequest() //创建XMLHttpRequest对象的方法 { if(window.ActiveXObject) //判断是否是IE浏览器 { xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); //创建IE浏览器中的XMLHttpRequest对象 } else if(window.XMLHttpRequest) //判断是否是Netscape等其他支持XMLHttpRequest组件的浏览器 { xmlHttpRequest = new XMLHttpRequest(); //创建其他浏览器上的XMLHttpRequest对象 } } --> </script> createXMLHttpRequst(); //调用创建对象的方法
"if(window. ActiveXObject)"用來判斷是否使用IE瀏覽器。其中ActiveXOject並不是Windows物件的標準屬性,而是IE瀏覽器中專有的屬性,可以用來判斷瀏覽器是否支援ActiveX控制項.通常只有IE瀏覽器或以IE瀏覽器為核心的瀏覽器才能支援Active控制.
## "else if(window.XMLHttpRequest)"是為了防止某些瀏覽器既不支援ActiveX控制項,也不支援XMLHttpRequest元件而進行的判斷.其中XMLHttpRequest也不是window物件的標準屬性,但可以用來判斷瀏覽器是否支援XMLHttpRequest元件. 如果瀏覽器既不支援ActiveX控制項,也不支援XMLHttpRequest元件,那麼就不會對xmlHttpRequest變量賦值.2、創建HTTP請求
創建了XMLHttpRequest對象之後,必須為XMLHttpRequest對象創建HTTP請求,用於說明XMLHttpRequest物件要從哪裡取得資料.通常可以是網站中的資料,也可以是本地中其他檔案中的資料.
建立HTTP請求可以使用XMLHttpRequest物件的open()方法,其語法程式碼如下所說明:XMLHttpRequest.open(method,URL,flag,name,password)程式碼中的參數解釋如下所示: method:此參數用於指定HTTP的請求方法,一共有get、post、head、put、delete 五種方法,常用的方法為get和post。 URL:參數用來指定HTTP請求的URL位址,可以是絕對URL,也可以是相對URL。 flag:此參數為選用參數,參數值為布林型。此參數用於指定是否使用非同步方式。 true表示非同步方式、false表示同步方式,預設為true。 name:此參數為選用參數,用於輸入使用者名稱。如果伺服器需要驗證,則必須使用該參數。 password:此參數為選用參數,用於輸入密碼。如果伺服器需要驗證,則必須使用該參數。通常可以使用以下程式碼來存取一個網站檔案的內容。 xmlHttpRequest.open("get","http://www.aspxfans.com/BookSupport/JavaScript/ajax.htm",true); 本機檔案內容: xmlHttpRequest.open("get","ajax.htm",true);
注意:如果HTML檔案放在網路伺服器上,在Netscape瀏覽器中的JavaScript安全機制不允許與本機以外的主機進行通訊。也就是說,使用open()方法只能開啟與HTML檔案在同一個伺服器上的檔案。而在IE瀏覽器中則無此限制(雖然可以開啟其他伺服器上的文件,但也會有警告提示)。
3、設定回應HTTP請求狀態變化的函數
#已建立完HTTP請求之後,應該就可以將HTTP請求傳送給Web伺服器了。然而,發送HTTP請求的目的是為了接收從伺服器傳回的資料。從建立XMLHttpRequest物件開始,到傳送資料、接收資料、XMLHttpRequest物件總共會經歷以下5中狀態。
⑴未初始化狀態。 在建立完XMLHttpRequest物件時,該物件處於未初始化狀態,此時XMLHttpRequest
#的物件的readyState屬性值為0。 (想看更多就到PHP中文網AJAX開發手冊欄位學習)# ⑵初始化狀態。
在創建完XMLHttpRequest物件後使用open()方法建立了HTTP 請求時,物件處於初始化狀態。此時XMLHttpRequest物件的readyState屬性值為1。
⑶#傳送資料狀態。 在初始化XMLHttpRequest物件後,使用send()方法傳送資料時,物件處於傳送數據狀態,此時XMLHttpRequest物件的#readyState屬性值為#2。
###⑷#######接收資料狀態。 ######Web######伺服器接收完資料並進行處理完畢之後,傳送傳回給客戶端的結果。此時,######XMLHttpRequest######物件處於接收資料狀態,######XMLHttpRequest#####物件的######readyState######屬性值為######3######。 ############ ######⑸######完成狀態。 ######XMLHttpRequest######物件接收資料完畢後,進入完成狀態,此時######XMLHttpRequest######物件的#######readyState### ###屬性值為######4######。此時接收完畢後的資料存入在客戶端電腦的記憶體中,可以使用######responseText######屬性或######responseXml#####屬性來取得數據。 ######只有在XMLHttpRequest对象完成了以上5个步骤之后,才可以获取从服务器端返回的数据。因此,如果要获得从服务器端返回的数据,就必须要先判断XMLHttpRequest对象的状态。
XMLHttpRequest对象可以响应readystatechange事件,该事件在XMLHttpRequest对象状态改变时(也就是readyState属性值改变时)激发。因此,可以通过该事件调用一个函数,并在该函数中判断XMLHttpRequest对象的readyState属性值。如果readyState属性值为4则使用responseText属性或responseXml属性来获取数据。具体代码如下所示:
//设置当XMLHttpRequest对象状态改变时调用的函数,注意函数名后面不要添加小括号 xmlHttpRequest.onreadystatechange = getData; //定义函数 function getData(){ //判断XMLHttpRequest对象的readyState属性值是否为4,如果为4表示异步调用完成 if(xmlHttpRequest.readyState == 4) { //设置获取数据的语句 } }
4、设置获取服务器返回数据的语句
如果XMLHttpRequest对象的readyState属性值等于4,表示异步调用过程完毕,就可以通过XMLHttpRequest对象的responseText属性或responseXml属性来获取数据。
但是,异步调用过程完毕,并不代表异步调用成功了,如果要判断异步调用是否成功,还要判断XMLHttpRequest对象的status属性值,只有该属性值为200,才表示异步调用成功,因此,要获取服务器返回数据的语句,还必须要先判断XMLHttpRequest对象的status属性值是否等于200,如以下代码所示:
if(xmlHttpRequst.status == 200){ //使用以下语句将返回结果以字符串形式输出 document.write(xmlHttpRequest.responseText); //或者使用以下语句将返回结果以XML形式输出 //document.write(xmlHttpRequest.responseXML); }
注意:如果HTML文件不是在Web服务器上运行,而是在本地运行,则xmlHttpRequest.status的返回值为0。因此,如果该文件在本地运行,则应该加上xmlHttpRequest.status == 0的判断。
通常将以上代码放在响应HTTP请求状态变化的函数体内,如以下代码所示:
//设置当XMLHttpRequest对象状态改变时调用的函数,注意函数名后面不要添加小括号 xmlHttpRequest.onreadystatechange = getData; //定义函数 function getData() { //判断XMLHttpRequest对象的readyState属性值是否为4,如果为4表示异步调用完成 if(xmlHttpRequest.readyState==4) { //设置获取数据的语句 if(xmlHttpRequest.status == 200 || xmlHttpRequest.status == 0) { //使用以下语句将返回结果以字符串形式输出 document.write(xmlHttpRequest.responseText); //或者使用以下语句将返回结果以XML形式输出 //docunment.write(xmlHttpRequest.responseXML); } } }
5、发送HTTP请求
在经过以上几个步骤的设置之后,就可以将HTTP请求发送到Web服务器上去了。发送HTTP请求可以使用XMLHttpRequest对象的send()方法,其语法代码如下所示:
XMLHttpRequest.send(data)
其中data是个可选参数,如果请求的数据不需要参数,即可以使用null来替代。data参数的格式与在URL中传递参数的格式类似,以下代码为一个send()方法中的data参数的示例:
name=myName&value=myValue
只有在使用send()方法之后,XMLHttpRequest对象的readyState属性值才会开始改变,也才会激发readystatechange事件,并调用函数。(想看更多就到PHP中文网AJAX开发手册栏目中学习)
6、局部更新
在通过Ajax的异步调用获得服务器端数据之后,可以使用JavaScript或DOM来将网页中的数据进行局部更新。常用的局部更新的方式有以下3种:
⑴表单对象的数据更新
表单对象的数据更新,通常只要更改表单对象的value属性值,其语法代码如下所示:
FormObject.value = "新数值"
有关表单对象的数据更新的示例如以下代码所示:
//设置当XMLHttpRequest对象状态改变时调用的函数,注意函数名后面不要添加小括号 xmlHttpRequest.onreadystatechange = getData; //定义函数 function getData() { //判断XMLHttpRequest对象的readyState属性值是否为4,如果为4表示异步调用完成 if(xmlHttpRequest.readyState==4) { //设置获取数据的语句 if(xmlHttpRequest.status == 200 || xmlHttpRequest.status == 0) { //使用以下语句将返回结果以字符串形式输出 document.write(xmlHttpRequest.responseText); //或者使用以下语句将返回结果以XML形式输出 //docunment.write(xmlHttpRequest.responseXML); } } }
⑵IE浏览器中标签间文本的更新
在HTML代码中,除了表单元素之外,还有很多其他的元素,这些元素的开始标签与结束标签之间往往也会有一点文字(如以下代码所示),对这些文字的更新,也是局部更新的一部分。
<p>文字</p> <span>文字</span> <p>文字</p> <label>文字</label> <b>文字</b> <i>文字</i>
在IE浏览器中,innerText或innerHTML属性可以用来更改标签间文本的内容。其中innerText属性用于更改开始标签与结束标签之间的纯文本内容,而innerHTML属性用于更改HTML内容。如以下代码所示:
<title>局部更新</title> <script> function changeData(){ myp.innerText = "更新后的数据"; } </script> <p>原数据</p> <input>
⑶DOM技术的局部刷新
innerText和innerHTML两个属性都是IE浏览器中的属性,在Netscape浏览器中并不支持该属性。但无论是IE浏览器还是Netscape浏览器,都支持DOM。在DOM中,可以修改标签间的文本内容。
在DOM中,将HTML文档中的每一对开始标签和结束标签都看成是一个节点。例如HTML文档中有一个标签如下所示,那么该标签在DOM中称之为一个“节点”。
原数据
在DOM中使用getElementById()方法可以通过id属性值来查找该标签(或者说是节点),如以下语句所示:
var node = document.getElementById("myp");
注意:在一个HTML文档中,每个标签中的id属性值是不能重复的。因此,使用getElementById()方法获得的节点是唯一的。
在DOM中,认为开始标签与结束标签之间的文本是该节点的子节点,而firstChild属性可以获得一个节点下的第1个子节点。如以下代码可以获得
节点下的第1个子节点,也就是
标签与
标签之间的文字节点。node.firstChild
注意,以上代码获得的是文字节点,而不是文字内容。如果要获得节点的文字内容,则要使用节点的nodeValue属性。通过设置nodeValue属性值,可以改变文字节点的文本内容。完整的代码如下所示。
<title>局部更新</title> <script> <!-- function changeData() { //查找标签(节点) var node = document.getElementById("myp"); //在DOM中标签中的文字被认为是标签中的子节点 //节点的firstChild属性为该节点下的第1个子节点 //nodeValue属性为节点的值,也就是标签中的文本值 node.firstChild.nodeValue = "更新后的数据"; } --> </script>
注意:目前主流的浏览器都支持DOM技术的局部刷新。
7、完整的AJAX实例
<title>AJAX实例</title> <script> <!-- var xmlHttpRequest; //定义一个变量用于存放XMLHttpRequest对象 //定义一个用于创建XMLHttpRequest对象的函数 function createXMLHttpRequest() { if(window.ActiveXObject) { //IE浏览器的创建方式 xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); }else if(windew.XMLHttpRequest) { //Netscape浏览器中的创建方式 xmlHttpRequest = new XMLHttpRequest(); } } //响应HTTP请求状态变化的函数 function httpStateChange() { //判断异步调用是否完成 if(xmlHttpRequest.readyState == 4) { //判断异步调用是否成功,如果成功开始局部更新数据 if(xmlHttpRequest.status == 200||xmlHttpRequest.status == 0) { //查找节点 var node = document.getElementById("myp"); //更新数据 node.firstChild.nodeValue = xmlHttpRequest .responseText; } else { //如果异步调用未成功,弹出警告框,并显示出错信息 alert("异步调用出错/n返回的HTTP状态码为:"+xmlHttpRequest.status + "/n返回的HTTP状态信息为:" + xmlHttpRequest.statusText); } } } //异步调用服务器段数据 function getData(name,value) { //创建XMLHttpRequest对象 createXMLHttpRequest(); if(xmlHttpRequest!=null) { //创建HTTP请求 xmlHttpRequest.open("get","ajax.text",true) //设置HTTP请求状态变化的函数 xmlHttpRequest.onreadystatechange = httpStateChange; //发送请求 xmlHttpRequest.send(null); } } --> </script> <p>原数据</p> <input>
本篇文章到这就结束了(想看更多就到PHP中文网AJAX使用手册栏目中学习),有问题的可以在下方留言提问。
以上是ajax的基本流程有哪些? ajax的基本流程的詳細解析(附實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Linux新版
SublimeText3 Linux最新版

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中