浅谈AJAX基本实现流程
1、js中ajax實(shí)現(xiàn)流程:
(1)?創(chuàng)建XMLHttpRequest對(duì)象,也就是創(chuàng)建一個(gè)異步調(diào)用對(duì)象.
(2)?創(chuàng)建一個(gè)新的HTTP請(qǐng)求,并指定該HTTP請(qǐng)求的方法、URL及驗(yàn)證信息.
(3) 設(shè)置響應(yīng)HTTP請(qǐng)求狀態(tài)變化的函數(shù).
(4) 發(fā)送HTTP請(qǐng)求。
(5) 獲取異步調(diào)用返回的數(shù)據(jù).
(6) 使用JavaScript和DOM實(shí)現(xiàn)局部刷新.
2、創(chuàng)建XMLHttpRequest
XMLHttpRequest 用于在后臺(tái)與服務(wù)器交換數(shù)據(jù)。這意味著可以在不重新加載整個(gè)網(wǎng)頁的情況下,對(duì)網(wǎng)頁的某部分進(jìn)行更新。
創(chuàng)建XMLHttpRequest對(duì)象:
var xmlhttp;
if (window.XMLHttpRequest)
? ? {//兼容IE7+, Firefox, Chrome, Opera, Safari
?? xmlhttp=new XMLHttpRequest(); }
else
?? ?{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); ?// 兼容 IE6, IE5}
3、向服務(wù)器發(fā)送請(qǐng)求:
將請(qǐng)求發(fā)送到服務(wù)器,我們使用 XMLHttpRequest 對(duì)象的 open() 和 send() 方法
open(method,url,async);
send(string);
例如:
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();
method:請(qǐng)求的類型;GET 或 POST
url:文件在服務(wù)器上的位置
async:true(異步)或 false(同步)
post和 get:
與 POST 相比,GET 更簡單也更快,并且在大部分情況下都能用。然而,在以下情況中,請(qǐng)使用 POST 請(qǐng)求:
a)?無法使用緩存文件(更新服務(wù)器上的文件或數(shù)據(jù)庫)
b)?向服務(wù)器發(fā)送大量數(shù)據(jù)(POST 沒有數(shù)據(jù)量限制)
c)?發(fā)送包含未知字符的用戶輸入時(shí),POST 比 GET 更穩(wěn)定也更可靠
4、設(shè)置響應(yīng)HTTP請(qǐng)求狀態(tài)變化的函數(shù)
如果需要像 HTML 表單那樣 POST 數(shù)據(jù),請(qǐng)使用 setRequestHeader() 來添加 HTTP 頭。然后在 send() 方法中規(guī)定您希望發(fā)送的數(shù)據(jù):setRequestHeader(header,value)
當(dāng)使用 async=true 時(shí),請(qǐng)規(guī)定在響應(yīng)處于 onreadystatechange 事件中的就緒狀態(tài)時(shí)執(zhí)行的函數(shù):
xmlhttp.onreadystatechange=function()
? ?{
? ?if (xmlhttp.readyState==4 && xmlhttp.status==200)
?? ??{
???? document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
?? ??}
? ?}
5、服務(wù)器響應(yīng)
如需獲得來自服務(wù)器的響應(yīng),請(qǐng)使用 XMLHttpRequest 對(duì)象的 responseText 或 responseXML 屬性。
來自服務(wù)器的響應(yīng)并非XML時(shí)用responseText :
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
來自服務(wù)器的響應(yīng)是XML是用responseXML :
xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
??{
??txt=txt + x[i].childNodes[0].nodeValue + "<br />";
? ?}
document.getElementById("myDiv").innerHTML=txt;
轉(zhuǎn)載于:https://www.cnblogs.com/flower-qh/p/7116309.html
總結(jié)
以上是生活随笔為你收集整理的浅谈AJAX基本实现流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Handlebars.js 模板引擎
- 下一篇: accp8.0转换教材第11章Ajax交