Ajax是一種在網(wǎng)頁上無需刷新頁面的技術(shù),通過使用JavaScript和XMLHttpRequest對象實現(xiàn)與服務(wù)器之間的數(shù)據(jù)交互。在Ajax中,有許多常用的屬性可以用來控制和處理數(shù)據(jù)的傳輸和響應(yīng)。下面將介紹五個常用的Ajax屬性,并舉例說明它們的用法。
第一個常用的Ajax屬性是onreadystatechange,這個屬性用來指定當readyState改變時執(zhí)行的函數(shù)。readyState表示XMLHttpRequest對象的狀態(tài),它有五個可能的值:0表示未初始化,1表示正在加載,2表示已加載,3表示交互中,4表示完成。下面的例子演示了在響應(yīng)完成時執(zhí)行一個函數(shù):
<script> function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("myDiv").innerHTML = this.responseText; } }; xmlhttp.open("GET", "ajax_info.txt", true); xmlhttp.send(); } </script> <button onclick="loadXMLDoc()">點擊加載</button> <div id="myDiv"></div>在上述示例中,通過定義onreadystatechange屬性為一個匿名函數(shù),當readyState為4且status為200時,將響應(yīng)的文本內(nèi)容顯示在id為"myDiv"的
元素中。
第二個常用的Ajax屬性是responseText,它用來獲取作為字符串形式的響應(yīng)數(shù)據(jù)。例如,下面的代碼演示了如何將響應(yīng)數(shù)據(jù)顯示在網(wǎng)頁上:
function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("myDiv").innerHTML = this.responseText; } }; xmlhttp.open("GET", "ajax_info.txt", true); xmlhttp.send(); }在這個例子中,當Ajax請求完成并且響應(yīng)狀態(tài)為200時,responseText屬性被用于將響應(yīng)數(shù)據(jù)顯示在id為"myDiv"的
元素中。
第三個常用的Ajax屬性是status,它表示服務(wù)器響應(yīng)的HTTP狀態(tài)代碼。通常,200表示成功,404表示未找到,500表示服務(wù)器錯誤等。如下示例展示了如何通過檢查status屬性來處理HTTP狀態(tài)代碼:
function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("myDiv").innerHTML = this.responseText; } else if (this.readyState == 4 && this.status == 404) { alert("請求的頁面不存在!"); } }; xmlhttp.open("GET", "ajax_info.txt", true); xmlhttp.send(); }在上述例子中,當響應(yīng)狀態(tài)為404時,彈出一個警告框來提示用戶請求的頁面不存在。 第四個常用的Ajax屬性是statusText,它包含HTTP狀態(tài)代碼的狀態(tài)文本。與status類似,它可以用來處理不同的HTTP狀態(tài)。下面的代碼演示了如何使用statusText屬性來處理不同的狀態(tài)返回:
function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("myDiv").innerHTML = this.responseText; } else if (this.readyState == 4 && this.status == 404) { alert("請求的頁面不存在!"); } else { alert("發(fā)生了一個錯誤:" + this.statusText); } }; xmlhttp.open("GET", "ajax_info.txt", true); xmlhttp.send(); }在上述示例中,如果響應(yīng)狀態(tài)不是200或404,則彈出一個警告框,顯示相應(yīng)的錯誤信息。 最后一個常用的Ajax屬性是responseXML,它用于返回一個表示響應(yīng)數(shù)據(jù)的XML文檔對象。這個屬性通常用于解析XML響應(yīng),下面的例子展示了如何解析一個XML響應(yīng)并將其中的數(shù)據(jù)顯示在網(wǎng)頁上:
function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var xmlDoc = this.responseXML; var x = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue; document.getElementById("myDiv").innerHTML = x; } }; xmlhttp.open("GET", "ajax_info.xml", true); xmlhttp.send(); }在上述示例中,將響應(yīng)的XML數(shù)據(jù)解析為一個XML文檔對象,并使用getElementsByTagName()方法獲取其中的"title"元素,并將其值顯示在id為"myDiv"的
元素中。
總結(jié)起來,Ajax中常用的屬性有onreadystatechange、responseText、status、statusText和responseXML。這些屬性可以幫助我們控制和處理與服務(wù)器之間的數(shù)據(jù)交互,并實現(xiàn)網(wǎng)頁的動態(tài)更新效果。通過合理地應(yīng)用這些屬性,我們可以更好地使用Ajax技術(shù)來提升用戶體驗,并優(yōu)化網(wǎng)頁的性能。