Ajax 基本使用的四大步驟,簡單易懂


ajax(異步javascript xml) 能夠刷新局部網頁數據而不是重新加載整個網頁。接下來通過本文給大家介紹Ajax的使用四大步驟,非常不錯,感興趣的朋友看下吧

什么是ajax?

ajax(異步javascript xml) 能夠刷新局部網頁數據而不是重新加載整個網頁。

如何使用ajax?

第一步,創建xmlhttprequest對象,var xmlhttp =new XMLHttpRequest();XMLHttpRequest對象用來和服務器交換數據。

1
2
3
4
5
6
7
8
var xhttp;
if (window.XMLHttpRequest) {
//現代主流瀏覽器
xhttp = new XMLHttpRequest();
} else {
// 針對瀏覽器,比如IE5或IE6
xhttp = new ActiveXObject( "Microsoft.XMLHTTP" );
}

第二步,使用xmlhttprequest對象的open()和send()方法發送資源請求給服務器。

xmlhttp.open(method,url,async) method包括get 和post,url主要是文件或資源的路徑,async參數為true(代表異步)或者false(代表同步)

xhttp.send();使用get方法發送請求到服務器。

xhttp.send(string);使用post方法發送請求到服務器。

post 發送請求什么時候能夠使用呢?

(1)更新一個文件或者數據庫的時候。

(2)發送大量數據到服務器,因為post請求沒有字符限制。

(3)發送用戶輸入的加密數據。

get例子:

 
1
2
3
xhttp.open( "GET" , "ajax_info.txt" , true );
xhttp.open( "GET" , "index.html" , true );
xhttp.open( "GET" , "demo_get.asp?t=" + Math.random(), true );xhttp.send();

post例子

 
1
2
xhttp.open( "POST" , "demo_post.asp" , true );
xhttp.send();

post表單數據需要使用xmlhttprequest對象的setRequestHeader方法增加一個HTTP頭。

post表單例子

 
1
2
3
xhttp.open( "POST" , "ajax_test.aspx" , true );
xhttp.setRequestHeader( "Content-type" , "application/x-www-form-urlencoded" );
xhttp.send( "fname=Henry&lname=Ford" );

async=true 當服務器准備響應時將執行onreadystatechange函數。

 
1
2
3
4
5
6
7
xhttp.onreadystatechange = function () {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById( "demo" ).innerHTML = xhttp.responseText;
}
};
xhttp.open( "GET" , "index.aspx" , true );
xhttp.send();

asyn=false 則將不需要寫onreadystatechange函數,直接在send后面寫上執行代碼。

 
1
2
3
xhttp.open( "GET" , "index.aspx" , false );
xhttp.send();
document.getElementById( "demo" ).innerHTML = xhttp.responseText;

第三步,使用xmlhttprequest對象的responseText或responseXML屬性獲得服務器的響應。

使用responseText屬性得到服務器響應的字符串數據,使用responseXML屬性得到服務器響應的XML數據。

例子如下:

 
1
document.getElementById( "demo" ).innerHTML = xhttp.responseText;

服務器響應的XML數據需要使用XML對象進行轉換。

例子:

 
1
2
3
4
5
6
7
xmlDoc = xhttp.responseXML;
txt = "" ;
x = xmlDoc.getElementsByTagName( "ARTIST" );
for (i = 0; i < x.length; i++) {
txt += x[i].childNodes[0].nodeValue + "<br>" ;
}
document.getElementById( "demo" ).innerHTML = txt;

第四步,onreadystatechange函數,當發送請求到服務器,我們想要服務器響應執行一些功能就需要使用onreadystatechange函數,每次xmlhttprequest對象的readyState發生改變都會觸發onreadystatechange函數。

onreadystatechange屬性存儲一個當readyState發生改變時自動被調用的函數。

readyState屬性,XMLHttpRequest對象的狀態,改變從0到4,0代表請求未被初始化,1代表服務器連接成功,2請求被服務器接收,3處理請求,4請求完成並且響應准備。
status屬性,200表示成功響應,404表示頁面不存在。

在onreadystatechange事件中,服務器響應准備的時候發生,當readyState==4和status==200的時候服務器響應准備。

例子:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById( "demo" ).innerHTML = xhttp.responseText;
}
};
xhttp.open( "GET" , "ajax_info.txt" , true );
xhttp.send();
}
//函數作為參數調用
<!DOCTYPE html>
<html>
<body>
<p id= "demo" >Let AJAX change this text.</p>
<button type= "button"
onclick= "loadDoc('index.aspx', myFunction)" >Change Content
</button>
<script>
function loadDoc(url, cfunc) {
var xhttp;
xhttp= new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (xhttp.readyState == 4 && xhttp.status == 200) {
cfunc(xhttp);
}
};
xhttp.open( "GET" , url, true );
xhttp.send();
}
function myFunction(xhttp) {
document.getElementById( "demo" ).innerHTML = xhttp.responseText;
}
</script>
</body>
</html>

以上所述是Ajax的使用四大步驟


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM