欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

Ajax歷史....了解性知識(shí)

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

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

Ajax代碼思路

創(chuàng)建請(qǐng)求對(duì)象

配置請(qǐng)求對(duì)象并發(fā)送到服務(wù)器

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

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

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特定的一種編程對(duì)象,有兩個(gè)不同版本由不同瀏覽器分別支持。XMLHTTP是可以在Javascript等腳本語(yǔ)言中通過http協(xié)議傳送或接收XML及其他數(shù)據(jù)的一套API。

獲得請(qǐng)求對(duì)象request后,它有這么些個(gè)屬性:

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

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

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

open,send方法均來(lái)自request對(duì)象的原型XMLHttpRequest,打開__proto__:XMLHttpRequest可看到:

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

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

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

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

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

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

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

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

ps:Ajax解決什么問題

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

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

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

相關(guān)文章

  • AJAX防止頁(yè)面緩存的代碼

    AJAX防止頁(yè)面緩存的代碼

    AJAX防止頁(yè)面緩存的代碼...
    2007-06-06
  • AjaxSubmit()提交file文件

    AjaxSubmit()提交file文件

    這篇文章主要介紹了AjaxSubmit()提交file文件的實(shí)例講解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • 各種AJAX方法的使用比較詳解

    各種AJAX方法的使用比較詳解

    AJAX技術(shù)經(jīng)過這么多年的發(fā)展,出現(xiàn)了一些框架或類庫(kù)用于簡(jiǎn)化開發(fā)工作,不同的框架類庫(kù)的使用方法也各不相同。 現(xiàn)在,再回頭看看這些技術(shù),看看這些框架類庫(kù),我們能感受到技術(shù)在不斷地發(fā)展,AJAX開發(fā)越來(lái)越容易了。
    2015-09-09
  • Ajax讀取txt并對(duì)txt內(nèi)容進(jìn)行分頁(yè)顯示功能

    Ajax讀取txt并對(duì)txt內(nèi)容進(jìn)行分頁(yè)顯示功能

    這篇文章給大家介紹了Ajax讀取txt并對(duì)txt內(nèi)容進(jìn)行分頁(yè)顯示功能,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-11-11
  • 淺析Ajax的 原理及優(yōu)缺點(diǎn)

    淺析Ajax的 原理及優(yōu)缺點(diǎn)

    本文從ajax技術(shù)的背景、原理、ajax的名字,ajax所包含的技術(shù)等方面展開話題,介紹ajax的原理及優(yōu)缺點(diǎn)。本文關(guān)于ajax的原理及優(yōu)缺點(diǎn)介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的小伙伴一起學(xué)習(xí)吧
    2016-04-04
  • ajax獲得json對(duì)象數(shù)組 循環(huán)輸出數(shù)據(jù)的方法

    ajax獲得json對(duì)象數(shù)組 循環(huán)輸出數(shù)據(jù)的方法

    今天小編就為大家分享一篇ajax獲得json對(duì)象數(shù)組 循環(huán)輸出數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-08-08
  • Ajax實(shí)現(xiàn)文件下載

    Ajax實(shí)現(xiàn)文件下載

    本文給大家介紹ajax實(shí)現(xiàn)文件下載相關(guān)知識(shí),涉及到ajax文件下載方面的知識(shí),本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03
  • ajax中用josnp接收josn數(shù)據(jù)的實(shí)現(xiàn)方法

    ajax中用josnp接收josn數(shù)據(jù)的實(shí)現(xiàn)方法

    下面小編就為大家分享一篇ajax中用josnp接收josn數(shù)據(jù)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2017-12-12
  • 基于ajax實(shí)現(xiàn)點(diǎn)擊加載更多無(wú)刷新載入到本頁(yè)

    基于ajax實(shí)現(xiàn)點(diǎn)擊加載更多無(wú)刷新載入到本頁(yè)

    本文給大家介紹通過ajax技術(shù)實(shí)現(xiàn)無(wú)刷新加載更多載入到本頁(yè),感興趣的朋友一起學(xué)習(xí)吧
    2015-10-10
  • 淺談AJAX開發(fā)技術(shù)

    淺談AJAX開發(fā)技術(shù)

    本文簡(jiǎn)單介紹了下ajax的概念歷史以及XMLHttpRequest對(duì)象的屬性、XMLHttpRequest對(duì)象的方法和AJAX封裝后的代碼,十分不錯(cuò),這里推薦給小伙伴們。
    2015-02-02

最新評(píng)論