Ajax+js實(shí)現(xiàn)異步交互
一提到異步交互大家就會(huì)說ajax,仿佛ajax這個(gè)技術(shù)已經(jīng)成為了異步交互的代名詞.那下面將研究ajax的核心對(duì)象!
利用ajax實(shí)現(xiàn)異步交互無非4步:
- 創(chuàng)建ajax核心對(duì)象
- 與服務(wù)器建立連接
- 向服務(wù)器發(fā)送請(qǐng)求
- 接收服務(wù)器響應(yīng)的數(shù)據(jù)
看似神秘的異步交互當(dāng)明確這4步后,也許在大家腦海里已經(jīng)有了初步的思路了
首先我們創(chuàng)建ajax的核心對(duì)象,由于瀏覽器的兼容問題我們?cè)趧?chuàng)建ajax核心對(duì)象的時(shí)候不得考慮其兼容問題,因?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();
通過上述代碼我們已經(jīng)成功的創(chuàng)建了ajax核心對(duì)象,我們保存在變量xhr中,接下來提到的ajax核心對(duì)象都將以xhr代替.
第二步就是與服務(wù)器建立連接,通過ajax核心對(duì)象調(diào)用open(method,url,async)方法.
open方法的形參解釋:
method表示請(qǐng)求方式(get或post)
url表示請(qǐng)求的php的地址(注意當(dāng)請(qǐng)求類型為get的時(shí)候,請(qǐng)求的數(shù)據(jù)將以問號(hào)跟隨url地址后面,下面的send方法中將傳入null值)
async是個(gè)布爾值,表示是否異步,默認(rèn)為true.在最新規(guī)范中這一項(xiàng)已經(jīng)不在需要填寫,因?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)回來的數(shù)據(jù),使用onreadystatechange事件監(jiān)聽服務(wù)器的通信狀態(tài).通過readyState屬性獲取服務(wù)器端當(dāng)前通信狀態(tài).status獲得狀態(tài)碼,利用responseText屬性接收服務(wù)器響應(yīng)回來的數(shù)據(jù)(這里指text類型的字符串格式數(shù)據(jù)).后面再寫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);
}
};
- JS基于MSClass和setInterval實(shí)現(xiàn)ajax定時(shí)采集信息并滾動(dòng)顯示的方法
- SpringMVC環(huán)境下實(shí)現(xiàn)的Ajax異步請(qǐng)求JSON格式數(shù)據(jù)
- 使用Jquery+Ajax+Json如何實(shí)現(xiàn)分頁顯示附JAVA+JQuery實(shí)現(xiàn)異步分頁
- asp.net+ajaxfileupload.js 實(shí)現(xiàn)文件異步上傳代碼分享
- jquery的ajax異步請(qǐng)求接收返回json數(shù)據(jù)實(shí)例
- 使用AjaxFileUpload.js實(shí)現(xiàn)異步文件上傳示例
- extJS中常用的4種Ajax異步提交方式
- JavaScript中從setTimeout與setInterval到AJAX異步
相關(guān)文章
AJAX和JSP實(shí)現(xiàn)的基于WEB的文件上傳的進(jìn)度控制代碼
AJAX和JSP實(shí)現(xiàn)的基于WEB的文件上傳的進(jìn)度控制代碼...2007-05-05
Ajax對(duì)xml信息的接收和處理操作實(shí)例分析
這篇文章主要介紹了Ajax對(duì)xml信息的接收和處理操作,結(jié)合實(shí)例形式分析了ajax針對(duì)xml結(jié)構(gòu)信息的相關(guān)處理操作技巧,需要的朋友可以參考下2019-07-07
活到老學(xué)到老學(xué)習(xí)AJAX跨域(三)
學(xué)習(xí)AJAX其實(shí)有個(gè)很重要的應(yīng)用,就是為了執(zhí)行另外幾個(gè)站點(diǎn)的ASP,返回結(jié)果。通過本文給大家介紹ajax跨域相關(guān)知識(shí),需要的朋友參考下2016-02-02
JQuery的ajax的用法在asp中使用$.ajax()實(shí)現(xiàn)
ajax的出現(xiàn)解決了很多的疑難問題,同時(shí)帶來了很多的方便,本文講述一下JQuery的ajax的用法在asp中使用$.ajax()來表示,感興趣的朋友可以了解下,或許本文對(duì)你有所幫助2013-01-01
ajax中設(shè)置contentType: "application/json"的作用
這篇文章主要介紹了ajax中設(shè)置contentType: “application/json”的作用,需要的朋友可以參考下2018-04-04
創(chuàng)建ajax對(duì)象并兼容多個(gè)瀏覽器
這篇文章主要介紹了如何創(chuàng)建ajax對(duì)象并兼容多個(gè)瀏覽器,需要的朋友可以參考下2014-06-06
基于iframe實(shí)現(xiàn)ajax跨域請(qǐng)求 獲取網(wǎng)頁中ajax數(shù)據(jù)
這篇文章主要介紹了基于iframe實(shí)現(xiàn)ajax跨域請(qǐng)求,并獲取網(wǎng)頁中ajax數(shù)據(jù),如何利用網(wǎng)頁ajax請(qǐng)求暴露出來的接口去抓取網(wǎng)頁數(shù)據(jù)?需要的朋友可以參考下2016-01-01
在實(shí)戰(zhàn)中可能碰到的幾種ajax請(qǐng)求方法詳解
這篇文章主要給大家分享了在實(shí)戰(zhàn)中可能碰到的幾種ajax請(qǐng)求方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-03-03
探討Ajax中有關(guān)readyState(狀態(tài)值)和status(狀態(tài)碼)的問題
這篇文章主要介紹了探討Ajax中有關(guān)readyState(狀態(tài)值)和status(狀態(tài)碼)的問題的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06

