我理解Ajax 是一種異步請求數(shù)據(jù)的一種技術(shù)索守,對于改善用戶的體驗和程序的性能很有幫助优烧。
1.創(chuàng)建xml對象
var xmlhttp
var xmlhttp;
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執(zhí)行代碼
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 瀏覽器執(zhí)行代碼
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
2.向服務(wù)器發(fā)送請求
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
open(method,url,async)
規(guī)定請求的類型、URL 以及是否異步處理請求耻陕。
method:請求的類型穆端;GET 或 POST
url:文件在服務(wù)器上的位置
async:true(異步)或 false(同步)
send(string)
將請求發(fā)送到服務(wù)器。
string:僅用于 POST 請求
與 POST 相比表伦,GET 更簡單也更快,并且在大部分情況下都能用慷丽。
然而蹦哼,在以下情況中,請使用 POST 請求:
無法使用緩存文件(更新服務(wù)器上的文件或數(shù)據(jù)庫)
向服務(wù)器發(fā)送大量數(shù)據(jù)(POST 沒有數(shù)據(jù)量限制)
發(fā)送包含未知字符的用戶輸入時要糊,POST 比 GET 更穩(wěn)定也更可靠
3.1同步處理
xmlhttp.open("GET","ajax_info.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
3.onreadystatechange 事件(異步處理)
onreadystatechange 存儲函數(shù)(或函數(shù)名)纲熏,每當(dāng) readyState 屬性改變時,就會調(diào)用該函數(shù)锄俄。
readyState
存有 XMLHttpRequest 的狀態(tài)局劲。從 0 到 4 發(fā)生變化。
0: 請求未初始化
1: 服務(wù)器連接已建立
2: 請求已接收
3: 請求處理中
4: 請求已完成奶赠,且響應(yīng)已就緒
status
200: "OK"
403 (禁止) 服務(wù)器拒絕請求
404: 未找到頁面
408 (請求超時) 服務(wù)器等候請求時發(fā)生超時
500 (服務(wù)器內(nèi)部錯誤) 服務(wù)器遇到錯誤鱼填,無法完成請求
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
服務(wù)器響應(yīng)
如需獲得來自服務(wù)器的響應(yīng),請使用 XMLHttpRequest 對象的 responseText 或 responseXML 屬性毅戈。
responseText 獲得字符串形式的響應(yīng)數(shù)據(jù)苹丸。
responseXML 獲得 XML 形式的響應(yīng)數(shù)據(jù)。