Ajax簡(jiǎn)單的異步交互及Ajax原生編寫(xiě)
一提到異步交互大家就會(huì)說(shuō)ajax,仿佛ajax這個(gè)技術(shù)已經(jīng)成為了異步交互的代名詞.那下面將研究ajax的核心對(duì)象!
利用ajax實(shí)現(xiàn)異步交互無(wú)非4步:
1.創(chuàng)建ajax核心對(duì)象
2.與服務(wù)器建立連接
3.向服務(wù)器發(fā)送請(qǐng)求
4.接收服務(wù)器響應(yīng)的數(shù)據(jù)
看似神秘的異步交互當(dāng)明確這4步后,也許在大家腦海里已經(jīng)有了初步的思路了
首先我們創(chuàng)建ajax的核心對(duì)象,由于瀏覽器的兼容問(wèn)題我們?cè)趧?chuàng)建ajax核心對(duì)象的時(shí)候不得考慮其兼容問(wèn)題,因?yàn)橐雽?shí)現(xiàn)異步交互的后面步驟都基于第一步是否成功的創(chuàng)建了ajax核心對(duì)象.
function getXhr(){
// 聲明XMLHttpRequest對(duì)象
var xhr = null;
// 根據(jù)瀏覽器的不同情況進(jìn)行創(chuàng)建
if(window.XMLHttpRequest){
// 表示除IE外的其他瀏覽器
xhr = new XMLHttpRequest();
}else{
// 表示IE瀏覽器
xhr = new ActiveXObject('Microsoft.XMLHttp');
}
return xhr;
}
// 創(chuàng)建核心對(duì)象
var xhr = getXhr();
通過(guò)上述代碼我們已經(jīng)成功的創(chuàng)建了ajax核心對(duì)象,我們保存在變量xhr中,接下來(lái)提到的ajax核心對(duì)象都將以xhr代替.
第二步就是與服務(wù)器建立連接,通過(guò)ajax核心對(duì)象調(diào)用open(method,url,async)方法.
open方法的形參解釋:
method表示請(qǐng)求方式(get或post)
url表示請(qǐng)求的php的地址(注意當(dāng)請(qǐng)求類(lèi)型為get的時(shí)候,請(qǐng)求的數(shù)據(jù)將以問(wèn)號(hào)跟隨url地址后面,下面的send方法中將傳入null值)
async是個(gè)布爾值,表示是否異步,默認(rèn)為true.在最新規(guī)范中這一項(xiàng)已經(jīng)不在需要填寫(xiě),因?yàn)楣俜秸J(rèn)為使用ajax就是為了實(shí)現(xiàn)異步.
xhr.open("get","01.php?user=xianfeng");//這是get方式請(qǐng)求數(shù)據(jù)
xhr.open("post","01.php");//這是以post方式請(qǐng)求數(shù)據(jù)
第三步我們將向服務(wù)器發(fā)送請(qǐng)求,利用ajax核心對(duì)象調(diào)用send方法
如果是post方式,請(qǐng)求的數(shù)據(jù)將以name=value形式放在send方法里發(fā)送給服務(wù)器,get方式直接傳入null值
xhr.send("user=xianfeng");//這是以post方式發(fā)送請(qǐng)求數(shù)據(jù)
xhr.send(null);//這是以get方式
第四步接收服務(wù)器響應(yīng)回來(lái)的數(shù)據(jù),使用onreadystatechange事件監(jiān)聽(tīng)服務(wù)器的通信狀態(tài).通過(guò)readyState屬性獲取服務(wù)器端當(dāng)前通信狀態(tài).status獲得狀態(tài)碼,利用responseText屬性接收服務(wù)器響應(yīng)回來(lái)的數(shù)據(jù)(這里指text類(lèi)型的字符串格式數(shù)據(jù)).后面再寫(xiě)XML格式的數(shù)據(jù)和大名鼎鼎的json格式數(shù)據(jù).
xhr.onreadystatechange = function(){
// 保證服務(wù)器端響應(yīng)的數(shù)據(jù)發(fā)送完畢,保證這次請(qǐng)求必須是成功的
if(xhr.readyState == 4&&xhr.status == 200){
// 接收服務(wù)器端的數(shù)據(jù)
var data = xhr.responseText;
// 測(cè)試
console.log(data);
}
};
ps:Ajax簡(jiǎn)單的異步交互
ajax簡(jiǎn)單的異步交互,可以先從get方式開(kāi)始說(shuō)起
那么創(chuàng)建一個(gè)Ajax與服務(wù)器端的異步請(qǐng)求,需要完成三個(gè)
步驟1、XMLHttpRequest對(duì)象的創(chuàng)建
if(window.XMLHttpRequest){//針對(duì)IE7以上 以及標(biāo)準(zhǔn)瀏覽器
var xhr=new XMLHttoRequest();
}else if(window.ActiveXObject){
var xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
步驟2、注冊(cè)回調(diào)函數(shù)
xhr.onreadystatechange=callback;
或者xhr.onreadystatechange=function(){
//codes here
}
步驟3、設(shè)置連接信息
xhr.open("GET",url,true)//其中true表示為異步交互
步驟4、發(fā)送數(shù)據(jù)
xhr.send(null);
相關(guān)文章
Jquery版本導(dǎo)致Ajax不執(zhí)行success回調(diào)函數(shù)
這篇文章主要介紹了Jquery Ajax不執(zhí)行success回調(diào)函數(shù)的原因及解決方法2014-04-04
用ajax實(shí)現(xiàn)預(yù)覽鏈接可以看到鏈接的內(nèi)容
用CSS設(shè)置預(yù)覽彈出窗口的樣式、用JavaScript進(jìn)行服務(wù)器請(qǐng)求并且顯示彈出窗口,需要的朋友可以參考下2014-08-08
詳解ajax +jtemplate實(shí)現(xiàn)動(dòng)態(tài)分頁(yè)
jtemplate是一個(gè)基于JQuery的模板引擎插件,功能非常強(qiáng)大,有了她你就再不用為使用JS綁定數(shù)據(jù)集而發(fā)愁了。本文給大家分享ajax +jtemplate實(shí)現(xiàn)動(dòng)態(tài)分頁(yè),需要的朋友可以參考下本文2015-09-09
AJAX和三層架構(gòu)實(shí)現(xiàn)分頁(yè)功能具體思路及代碼
本文涉及到AJAX和三層架構(gòu)方面的知識(shí),在學(xué)習(xí)分頁(yè)的同時(shí)也鞏固了一下它們的相關(guān)知識(shí),適合初學(xué)者的你2013-05-05
簡(jiǎn)單實(shí)體類(lèi)和xml文件的相互轉(zhuǎn)換方法
下面小編就為大家?guī)?lái)一篇簡(jiǎn)單實(shí)體類(lèi)和xml文件的相互轉(zhuǎn)換方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
SpringMVC+Jquery實(shí)現(xiàn)Ajax功能
SpringMVC:是基于Spring的一個(gè)子框架(MVC框架),功能強(qiáng)于Spring,這個(gè)框架主要是解決咱們Controller這一層的問(wèn)題。這篇文章主要介紹了SpringMVC+Jquery實(shí)現(xiàn)Ajax功能,需要的朋友可以參考下2019-06-06
Ajax 通過(guò)城市名獲取數(shù)據(jù)(全國(guó)天氣預(yù)報(bào)API)
本文給大家分享全國(guó)天氣預(yù)報(bào)API Ajax 通過(guò)城市名獲取數(shù)據(jù),通過(guò)html和js兩部分代碼實(shí)現(xiàn)天氣預(yù)報(bào)效果,輸入城市就會(huì)出現(xiàn)天氣情況,效果非常棒,感興趣的朋友可以參考下2016-11-11
ajax接收Date類(lèi)型的數(shù)據(jù)時(shí)會(huì)把數(shù)據(jù)轉(zhuǎn)換為時(shí)間戳
ajax接收Date類(lèi)型的數(shù)據(jù)時(shí)將會(huì)把數(shù)據(jù)轉(zhuǎn)換為時(shí)間戳,下面是具體的示例,大家可以參考下2014-05-05

