什么是ajax?
ajax(異步javascript xml) 能夠刷新局部網(wǎng)頁數(shù)據(jù)而不是重新加載整個網(wǎng)頁。
如何使用ajax?
第一步,創(chuàng)建xmlhttprequest對象,var xmlhttp =new XMLHttpRequest();XMLHttpRequest對象用來和服務器交換數(shù)據(jù)。
var xhttp;
if (window.XMLHttpRequest) {
//現(xiàn)代主流瀏覽器
xhttp = new XMLHttpRequest();
} else {
// 針對瀏覽器,比如IE5或IE6
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
第二步,使用xmlhttprequest對象的open()和send()方法發(fā)送資源請求給服務器。
xmlhttp.open(method,url,async) method包括get 和post,url主要是文件或資源的路徑,async參數(shù)為true(代表異步)或者false(代表同步)
xhttp.send();使用get方法發(fā)送請求到服務器。
xhttp.send(string);使用post方法發(fā)送請求到服務器。
post 發(fā)送請求什么時候能夠使用呢?
(1)更新一個文件或者數(shù)據(jù)庫的時候。
(2)發(fā)送大量數(shù)據(jù)到服務器,因為post請求沒有字符限制。
(3)發(fā)送用戶輸入的加密數(shù)據(jù)。
get例子:
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例子
xhttp.open("POST", "demo_post.asp", true);
xhttp.send();
post表單數(shù)據(jù)需要使用xmlhttprequest對象的setRequestHeader方法增加一個HTTP頭。
post表單例子
xhttp.open("POST", "ajax_test.aspx", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henrylname=Ford");
async=true 當服務器準備響應時將執(zhí)行onreadystatechange函數(shù)。
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函數(shù),直接在send后面寫上執(zhí)行代碼。
xhttp.open("GET", "index.aspx", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
第三步,使用xmlhttprequest對象的responseText或responseXML屬性獲得服務器的響應。
使用responseText屬性得到服務器響應的字符串數(shù)據(jù),使用responseXML屬性得到服務器響應的XML數(shù)據(jù)。
例子如下:
document.getElementById("demo").innerHTML = xhttp.responseText;
服務器響應的XML數(shù)據(jù)需要使用XML對象進行轉(zhuǎn)換。
例子:
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函數(shù),當發(fā)送請求到服務器,我們想要服務器響應執(zhí)行一些功能就需要使用onreadystatechange函數(shù),每次xmlhttprequest對象的readyState發(fā)生改變都會觸發(fā)onreadystatechange函數(shù)。
onreadystatechange屬性存儲一個當readyState發(fā)生改變時自動被調(diào)用的函數(shù)。
readyState屬性,XMLHttpRequest對象的狀態(tài),改變從0到4,0代表請求未被初始化,1代表服務器連接成功,2請求被服務器接收,3處理請求,4請求完成并且響應準備。
status屬性,200表示成功響應,404表示頁面不存在。
在onreadystatechange事件中,服務器響應準備的時候發(fā)生,當readyState==4和status==200的時候服務器響應準備。
例子:
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();
}
//函數(shù)作為參數(shù)調(diào)用
!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的使用四大步驟,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- jQuery使用ajaxSubmit()提交表單示例
- jquery中ajax使用error調(diào)試錯誤的方法
- 基于jquery的$.ajax async使用
- jquery.ajax之beforeSend方法使用介紹
- 使用jquery的ajax需要注意的地方dataType的設置
- jquery序列化form表單使用ajax提交后處理返回的json數(shù)據(jù)
- 跨域請求之jQuery的ajax jsonp的使用解惑
- Ajax的使用代碼解析
- 淺析Asp.net MVC 中Ajax的使用
- AJAX的使用方法詳解