最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ajax學(xué)習(xí)筆記整理

 更新時間:2016年01月18日 09:22:59   作者:venoral  
Ajax: Asynchronous JavaScript and Xml , 異步j(luò)s腳本和xml , 常用來實現(xiàn)頁面局部的異步刷新, 對提高用戶體驗有很大幫助. Xml在多語言時較有優(yōu)勢, 但Ajax技術(shù)實際上較多采用Json對象而不是Xml來處理數(shù)據(jù)

Ajax: Asynchronous JavaScript and Xml , 異步j(luò)s腳本和xml , 常用來實現(xiàn)頁面局部的異步刷新, 對提高用戶體驗有很大幫助. Xml在多語言時較有優(yōu)勢, 但Ajax技術(shù)實際上較多采用Json對象而不是Xml來處理數(shù)據(jù).

Ajax歷史....了解性知識

Ajax歸屬于Web前端開發(fā)技術(shù), 與javascript有著異常緊密的聯(lián)系. Ajax就是一種實現(xiàn)異步通信無刷新的技術(shù), 而這種技術(shù)可以有很多種實現(xiàn)方式. 瀏覽器的鼻祖網(wǎng)景(NetScape)公司最早發(fā)明了LiveScript腳本語言, 用來豐富網(wǎng)頁元素的表現(xiàn)形式, 使網(wǎng)頁能夠呈現(xiàn)出動態(tài)效果. 隨后的歷次改版升級后就誕生了JavaScript語言, 與此同期微軟(Microsoft)公司也看到互聯(lián)網(wǎng)的前景, 開始涉足并發(fā)力于互聯(lián)網(wǎng)行業(yè), 推出了JScript語言, 可惜沒有JavaScript成熟, 發(fā)展遲滯. 最終微軟公司對互聯(lián)網(wǎng)的決心促成了MS對NS的漫長曲折的收購歷程.

這里提一下, 動態(tài)HTML語言(Dynamic Hyper Text Markup Language)就是將javascript放在Dom樹的元素節(jié)點中, 為元素提供動態(tài)展示行為.

Ajax代碼思路

創(chuàng)建請求對象

配置請求對象并發(fā)送到服務(wù)器

服務(wù)器應(yīng)答請求對象

(1) 創(chuàng)建請求對象,作為和服務(wù)器進(jìn)行通訊的對象:

function createRequest(){
try{
var request=new XMLHttpRequest();
}catch(tryMS){
try{
request=new ActiveXObject("Msxml2.XMLHTTP");
}catch(otherMS){
try{
request=new ActiveXObject("Microsoft.XMLHTTP");
}catch(failed){
request=null;
}
}
}
return request;
}

注:ActiveXObject是Microsoft特定的一種編程對象,有兩個不同版本由不同瀏覽器分別支持。XMLHTTP是可以在Javascript等腳本語言中通過http協(xié)議傳送或接收XML及其他數(shù)據(jù)的一套API。

獲得請求對象request后,它有這么些個屬性:

常用的有onreadystatechange,readyState,responseText,status。

(2)配置請求對象并發(fā)送到服務(wù)器:

var request=createRequest();
request.open("GET",url,true);
request.onreadystatechange=showResponse;
request.send(null);

open,send方法均來自request對象的原型XMLHttpRequest,打開__proto__:XMLHttpRequest可看到:

open()方法有三個參數(shù),第一個是發(fā)送請求所使用的方法(GET還是POST,區(qū)別以后再總結(jié)),第二個是規(guī)定服務(wù)器端腳本的url(該文件可以是任何類型的文件),第三個參數(shù)規(guī)定是否進(jìn)行異步處理(默認(rèn)true異步)

send()方法將請求送往服務(wù)器。

我在這里注意到,request.onreadystatechange=showResponse;這句代碼所在的位置不同,控制臺輸出的響應(yīng)內(nèi)容就不同。想來也是,回調(diào)函數(shù)加入任務(wù)隊列的時機不同肯定輸出不同啊,就比如現(xiàn)在這個位置,

request.onreadystatechange=showResponse;在open之后send之前,當(dāng)代碼解析到request.onreadystatechange=showResponse;時,此時的readyStates=1(請求已和服務(wù)器建立接連),此后當(dāng)readyStates由1變?yōu)?,回調(diào)函數(shù)showResponse加入任務(wù)隊列中等待被執(zhí)行,readyState從2變化到3,回調(diào)函數(shù)showResponse第二次加入任務(wù)隊列,readyState從3變化到4,回調(diào)函數(shù)再次加入隊列。所以猜想當(dāng)主代碼執(zhí)行完畢后,控制臺會輸出“請求已發(fā)送,服務(wù)器已接收,send之后”,“請求正在處理”,“請求已完成”;確實如此:

(3)服務(wù)器應(yīng)答請求對象,js就可以處理響應(yīng)內(nèi)容了:

function showResponse(){
if(request.readyState==0){
console.log('請求未初始化,調(diào)用open之前');
}else if(request.readyState==1){
console.log('請求已提出,服務(wù)器連接已建立,open之后send之前');
}else if(request.readyState==2){
console.log('請求已發(fā)送,服務(wù)器已接收,send之后');
}else if(request.readyState==3){
console.log('請求正在處理');
}else if(request.readyState==4){
console.log('請求已完成');
if(request.status==200){
//處理request.responseText;
}
}
}

上面代碼僅是為了跟蹤readyState變化,實際項目代碼要不了這么多。底下才是實際主要代碼:

function showResponse(){
if(request.readyState==4){
if(request.status==200){
//處理request.responseText;
}
}
}

ps:Ajax解決什么問題

我們都知道, 在客戶端向服務(wù)器請求一個頁面時, 服務(wù)器首先動態(tài)的計算并生成出頁面, 然后再發(fā)給客戶端. 客戶端瀏覽器順序編譯并呈現(xiàn)頁面.

在沒有Ajax時: 假如說頁面有個用戶驗證控件, 那么在客戶端瀏覽器呈現(xiàn)用戶驗證控件時, 會等待服務(wù)器的驗證結(jié)果, 收到結(jié)果后才能繼續(xù)呈現(xiàn)頁面元素. 而這個驗證過程通常要進(jìn)行讀取數(shù)據(jù)庫等操作, 這就是所謂的同步方式. 而這種方式, 會造成網(wǎng)頁呈現(xiàn)的假死狀態(tài).

在使用Ajax后: 同樣是驗證控件, 客戶端提交了驗證請求后, 便繼續(xù)順序呈現(xiàn)其他元素. 當(dāng)取得驗證結(jié)果后, 由javascript在客戶端修改內(nèi)存中的DOM對象后并呈獻(xiàn)給用戶(注意: 這里修改的只是內(nèi)存中的DOM對象, 而客戶端接收的頁面文件并沒有修改). 這樣, 使用異步的方式, 就不會出現(xiàn)假死狀態(tài), 同時客戶端也節(jié)省了等待服務(wù)器返回結(jié)果時的時間開銷.

相關(guān)文章

  • ajax實現(xiàn)異步文件或圖片上傳功能

    ajax實現(xiàn)異步文件或圖片上傳功能

    這篇文章主要為大家詳細(xì)介紹了ajax實現(xiàn)異步文件(圖片)上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • AJAX頁面狀態(tài)保持思路詳解

    AJAX頁面狀態(tài)保持思路詳解

    AJAX流行的時候,很多信息為AJAX異步請求,比如:點擊、翻頁等。通常這種情況你一刷新瀏覽器,當(dāng)前頁面就會重置到初始狀態(tài)。更不用說把看到的信息url發(fā)給好友了。下面給大家分享實現(xiàn)思路,一起看看吧
    2017-03-03
  • Ajax 程序開發(fā)中常見問題

    Ajax 程序開發(fā)中常見問題

    Ajax 程序開發(fā)中常見問題,利用大家快點的找到問題所在,快速解決問題。
    2009-08-08
  • Ajax技術(shù)組成與核心原理分析

    Ajax技術(shù)組成與核心原理分析

    這篇文章主要介紹了JavaScript性能優(yōu)化之函數(shù)節(jié)流(throttle)與函數(shù)去抖(debounce),感興趣的小伙伴們可以參考一下
    2016-08-08
  • layui Ajax請求給下拉框賦值的實例

    layui Ajax請求給下拉框賦值的實例

    今天小編就為大家分享一篇layui Ajax請求給下拉框賦值的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Ajax發(fā)送和接收二進(jìn)制字節(jié)流數(shù)據(jù)的方法

    Ajax發(fā)送和接收二進(jìn)制字節(jié)流數(shù)據(jù)的方法

    這篇文章主要介紹了Ajax發(fā)送和接收二進(jìn)制字節(jié)流數(shù)據(jù)的方法,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-05-05
  • JavaScript操作表單_動力節(jié)點Java學(xué)院整理

    JavaScript操作表單_動力節(jié)點Java學(xué)院整理

    用JavaScript操作表單和操作DOM是類似的,因為表單本身也是DOM樹。下面通過本文給大家介紹JavaScript操作表單的相關(guān)知識,感興趣的朋友一起看看吧
    2017-06-06
  • AJAX實現(xiàn)無刷新檢測用戶名功能

    AJAX實現(xiàn)無刷新檢測用戶名功能

    這篇文章主要為大家詳細(xì)介紹了AJAX實現(xiàn)無刷新用戶名檢測功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 基于Ajaxupload的多文件上傳操作

    基于Ajaxupload的多文件上傳操作

    本文通過實例代碼給大家介紹了基于Ajaxupload的多文件上傳操作,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧
    2017-08-08
  • Axios和Ajax的區(qū)別是什么(詳細(xì)介紹)

    Axios和Ajax的區(qū)別是什么(詳細(xì)介紹)

    ajax技術(shù)實現(xiàn)了局部數(shù)據(jù)的刷新,axios實現(xiàn)了對ajax的封裝,axios有的ajax都有,ajax有的axios不一定有,總結(jié)一句話就是axios是ajax,ajax不止axios,本文對Axios和Ajax的區(qū)別是什么給大家講解的非常詳細(xì),需要的朋友一起看看吧
    2023-10-10

最新評論

嘉鱼县| 孟津县| 瑞丽市| 安图县| 夏邑县| 烟台市| 邵阳市| 富民县| 阳信县| 洱源县| 凌海市| 连城县| 巴马| 苏尼特左旗| 曲阳县| 昭通市| 上栗县| 武宣县| 东莞市| 涟源市| 云梦县| 佛山市| 贵德县| 南部县| 瑞丽市| 乌鲁木齐县| 乌拉特前旗| 香格里拉县| 涿鹿县| 会同县| 呼图壁县| 招远市| 乐都县| 云林县| 德清县| 苗栗市| 灌南县| 敦煌市| 毕节市| 固始县| 太仆寺旗|