ajax的工作原理以及異步請(qǐng)求的封裝介紹
更新時(shí)間:2013年09月23日 09:13:47 作者:
客戶端通過(guò)瀏覽器的內(nèi)置對(duì)象XMLHttpRequest來(lái)發(fā)送異步請(qǐng)求,當(dāng)服務(wù)器返回響應(yīng)時(shí),會(huì)調(diào)用先前注冊(cè)的回調(diào)函數(shù),異步請(qǐng)求不會(huì)阻塞客戶端的操作,達(dá)到頁(yè)面無(wú)法刷新就可以更新數(shù)據(jù)的效果
Ajax原理:
客戶端通過(guò)瀏覽器的內(nèi)置對(duì)象XMLHttpRequest來(lái)發(fā)送異步請(qǐng)求,當(dāng)服務(wù)器返回響應(yīng)時(shí),會(huì)調(diào)用先前注冊(cè)的回調(diào)函數(shù),在回調(diào)函數(shù)中可以使用javascript操作DOM來(lái)更新頁(yè)面,異步請(qǐng)求不會(huì)阻塞客戶端的操作,達(dá)到頁(yè)面無(wú)法刷新就可以更新數(shù)據(jù)的效果。
異步請(qǐng)求的封裝:
var xhr=false;
//step1:創(chuàng)建一個(gè)兼容瀏覽器各個(gè)版本的XMLHttpRequest對(duì)象
if (window.XMLHttpRequest) { //IE7+, Firefox, Chrome, Opera, Safari
xhr = new XMLHttpRequest();
} else {
if (window.ActiveXObject) { //IE瀏覽器
xhr = new ActiveXObject("Microsoft.XMLHTTP");//IE5+
}
}
//step2:設(shè)置回調(diào)函數(shù)
xhr.onreadystatechange = myCallback;
//step3:創(chuàng)建一個(gè)異步請(qǐng)求
xhr.open("method", "url", true);
//如果是post:要設(shè)置請(qǐng)求消息體數(shù)據(jù)的編碼方式
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//step4:發(fā)送異步請(qǐng)求
xhr.send(content); //如果是get方式 content為null,若為post,content為“名=值”對(duì)。
客戶端通過(guò)瀏覽器的內(nèi)置對(duì)象XMLHttpRequest來(lái)發(fā)送異步請(qǐng)求,當(dāng)服務(wù)器返回響應(yīng)時(shí),會(huì)調(diào)用先前注冊(cè)的回調(diào)函數(shù),在回調(diào)函數(shù)中可以使用javascript操作DOM來(lái)更新頁(yè)面,異步請(qǐng)求不會(huì)阻塞客戶端的操作,達(dá)到頁(yè)面無(wú)法刷新就可以更新數(shù)據(jù)的效果。
異步請(qǐng)求的封裝:
復(fù)制代碼 代碼如下:
var xhr=false;
//step1:創(chuàng)建一個(gè)兼容瀏覽器各個(gè)版本的XMLHttpRequest對(duì)象
if (window.XMLHttpRequest) { //IE7+, Firefox, Chrome, Opera, Safari
xhr = new XMLHttpRequest();
} else {
if (window.ActiveXObject) { //IE瀏覽器
xhr = new ActiveXObject("Microsoft.XMLHTTP");//IE5+
}
}
//step2:設(shè)置回調(diào)函數(shù)
xhr.onreadystatechange = myCallback;
//step3:創(chuàng)建一個(gè)異步請(qǐng)求
xhr.open("method", "url", true);
//如果是post:要設(shè)置請(qǐng)求消息體數(shù)據(jù)的編碼方式
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//step4:發(fā)送異步請(qǐng)求
xhr.send(content); //如果是get方式 content為null,若為post,content為“名=值”對(duì)。
您可能感興趣的文章:
- Vue form 表單提交+ajax異步請(qǐng)求+分頁(yè)效果
- ajax異步請(qǐng)求詳解
- AJAX實(shí)現(xiàn)簡(jiǎn)單的注冊(cè)頁(yè)面異步請(qǐng)求實(shí)例代碼
- ajax異步請(qǐng)求刷新
- 淺談Jquery中Ajax異步請(qǐng)求中的async參數(shù)的作用
- 基于JQuery的$.ajax方法進(jìn)行異步請(qǐng)求導(dǎo)致頁(yè)面閃爍的解決辦法
- SpringMVC環(huán)境下實(shí)現(xiàn)的Ajax異步請(qǐng)求JSON格式數(shù)據(jù)
- jquery的ajax異步請(qǐng)求接收返回json數(shù)據(jù)實(shí)例
- dojo學(xué)習(xí)第二天 ajax異步請(qǐng)求之綁定列表
- 解決ajax異步請(qǐng)求返回的是字符串問(wèn)題
相關(guān)文章
解決ajax傳過(guò)來(lái)的值后臺(tái)接收不到的問(wèn)題
今天小編就為大家分享一篇解決ajax傳過(guò)來(lái)的值后臺(tái)接收不到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08ajax用json實(shí)現(xiàn)數(shù)據(jù)傳輸
本文主要介紹了ajax用json實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)姆椒?,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03javascript 拖動(dòng)_cookie_ajax等
比較實(shí)用的js拖動(dòng)效果代碼。類的寫法不錯(cuò),是個(gè)不錯(cuò)的應(yīng)用2008-06-06在layer彈出層中通過(guò)ajax返回html拼接字符串填充數(shù)據(jù)的方法
這篇文章主要介紹了在layer彈出層中通過(guò)ajax返回html拼接字符串填充數(shù)據(jù)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11創(chuàng)建ajax對(duì)象并兼容多個(gè)瀏覽器
這篇文章主要介紹了如何創(chuàng)建ajax對(duì)象并兼容多個(gè)瀏覽器,需要的朋友可以參考下2014-06-06Ajax并不神秘:揭下各種Ajax控件和類庫(kù)的小褲衩
Ajax并不神秘:揭下各種Ajax控件和類庫(kù)的小褲衩...2007-03-03