1.一種基于數(shù)據(jù)層的改進(jìn)ajax性能的方法,其特征在于:包括初始化步驟、任務(wù)遷徙步驟和動(dòng)畫(huà)效果步驟包括以下步驟:
所述的初始化步驟包括以下子步驟:
S11.創(chuàng)建數(shù)據(jù)層,采用命名空間實(shí)現(xiàn),所述的命名空間采用json語(yǔ)法實(shí)現(xiàn);
S12. 數(shù)據(jù)層將每個(gè)ajax視為一個(gè)任務(wù),并為其賦予一個(gè)任務(wù)編號(hào);其中,對(duì)于每一個(gè)任務(wù),數(shù)據(jù)層建立一張表格,維護(hù)每個(gè)任務(wù)的狀態(tài);
S13.數(shù)據(jù)層提供一個(gè)函數(shù)接口send, 參數(shù)為json對(duì)象;
所述的任務(wù)遷徙步驟包括以下子步驟:
S21:數(shù)據(jù)層收到客戶端向服務(wù)端發(fā)送的請(qǐng)求后,為任務(wù)分配一個(gè)id號(hào),將任務(wù)狀態(tài)設(shè)置為新建created;
S22:參數(shù)收集,當(dāng)參數(shù)收集完畢,向服務(wù)端發(fā)送ajax請(qǐng)求,將任務(wù)狀態(tài)設(shè)置為waiting,同時(shí)超時(shí)計(jì)數(shù)器開(kāi)始計(jì)數(shù);
S23:當(dāng)超時(shí)計(jì)數(shù)器計(jì)數(shù)結(jié)束之前,收到服務(wù)端返回的結(jié)果后,將任務(wù)狀態(tài)設(shè)置為finished;當(dāng)超時(shí)計(jì)數(shù)器計(jì)數(shù)結(jié)束服務(wù)端仍然沒(méi)有返回結(jié)果,任務(wù)將被終止,從waiting狀態(tài)直接進(jìn)入aborted狀態(tài);
所述的嵌入動(dòng)畫(huà)效果步驟為:
S31.使用absoulte布局,在Z軸最頂端加入div元素,div的visibility屬性設(shè)置為true,嵌入一個(gè)等待動(dòng)畫(huà)圖片;
S32. 客戶調(diào)用send函數(shù)時(shí),數(shù)據(jù)層將actionprompt設(shè)置為true,數(shù)據(jù)層將顯示等待動(dòng)畫(huà),如果actionprompt為false,將div的visibility屬性設(shè)置為false。
2.根據(jù)權(quán)利要求1所述的一種基于數(shù)據(jù)層的改進(jìn)ajax性能的方法,其特征在于:所述的json對(duì)象的結(jié)構(gòu)包括:
Actionid:由數(shù)據(jù)層datalayer自動(dòng)生成,表示任務(wù)編號(hào);
Actionstatus:表示任務(wù)的狀態(tài),包括創(chuàng)建、等待、終止、錯(cuò)誤;
Actionname:表示任務(wù)的名稱;
Actionprompt:表示是否出現(xiàn)文字和動(dòng)畫(huà)提示請(qǐng)求在處理中;
Maximumwaitingtime:表示一個(gè)任務(wù)最長(zhǎng)的等待時(shí)間,超出這個(gè)等待時(shí)間而服務(wù)端沒(méi)有回應(yīng),數(shù)據(jù)層將終止任務(wù)運(yùn)行;
Callbacksuccess,表示用來(lái)注冊(cè)成功時(shí)候的回調(diào)函數(shù);
Callbackfail,表示用來(lái)注冊(cè)任務(wù)失敗時(shí)的回調(diào)函數(shù);
Waitingtip,當(dāng)?shù)却?wù)端回應(yīng)的時(shí)候,給予用戶的提示;
Url,指向服務(wù)端的地址,以所述的Actionname加上json后綴表示;
Atype,表示請(qǐng)求類(lèi)型
Multi,表示能否重復(fù)請(qǐng)求的狀態(tài),當(dāng)設(shè)置為false時(shí)候,禁止改同一個(gè)任務(wù)在狀態(tài)處于create或者waitting時(shí)候反復(fù)發(fā)送。
3.根據(jù)權(quán)利要求1所述的一種基于數(shù)據(jù)層的改進(jìn)ajax性能的方法,其特征在于:所述的表格結(jié)構(gòu)包括
Actionid:表示任務(wù)編號(hào);
Actionname:表示任務(wù)的名稱;
Actionstatus:表示任務(wù)的狀態(tài),包括創(chuàng)建、等待、終止、錯(cuò)誤;
ajaxobj:ajax引用實(shí)例;
multi:表示能否重復(fù)請(qǐng)求的狀態(tài),當(dāng)設(shè)置為false時(shí)候,禁止改同一個(gè)任務(wù)在狀態(tài)處于create或者waitting時(shí)候反復(fù)發(fā)送
injectedStatus:尾部是否置入特殊動(dòng)作。
4.根據(jù)權(quán)利要求1所述的一種基于數(shù)據(jù)層的改進(jìn)ajax性能的方法,其特征在于:它還包括一個(gè)瀏覽器版本判斷步驟:在每次任務(wù)狀態(tài)切換之后打印任務(wù)信息之前,判斷瀏覽器版本是否為console.log()函數(shù)所支持的版本,如果支持則調(diào)用console.log()函數(shù)進(jìn)行打印,否則不調(diào)用。
5.根據(jù)權(quán)利要求1或4所述的一種基于數(shù)據(jù)層的改進(jìn)ajax性能的方法,其特征在于:
在所述的瀏覽器版本判斷步驟之后,還包括一個(gè)解析錯(cuò)誤狀態(tài)的轉(zhuǎn)換步驟:ie瀏覽器解析服務(wù)端返回的xml字符串出錯(cuò)的情況下,在ajax error屬性中注冊(cè)回調(diào)函數(shù),在這個(gè)函數(shù)中略過(guò)http頭,定位到xml數(shù)據(jù)體,然后獲取xml字符串內(nèi)容, 將其轉(zhuǎn)換為jquery對(duì)象,將返回至客戶端。
6.根據(jù)權(quán)利要求1所述的一種基于數(shù)據(jù)層的改進(jìn)ajax性能的方法,其特征在于:所述的參數(shù)收集包括以下步驟:
S1.在數(shù)據(jù)層這個(gè)json對(duì)象中加入屬性currentActionID, 指向任務(wù)表中正在處理的任務(wù)id;
S2.任務(wù)表中增加一列injectedStatus, 表示是否已經(jīng)向任務(wù)處理動(dòng)作的末尾植入了一個(gè)特殊的動(dòng)作;
S3.然后將任務(wù)狀態(tài)設(shè)置為waiting即可;當(dāng)服務(wù)器返回?cái)?shù)據(jù)時(shí)候,在回調(diào)函數(shù)中,數(shù)據(jù)層將調(diào)用用戶注冊(cè)的回調(diào)函數(shù),然后將任務(wù)狀態(tài)設(shè)置為finished或者error;
S4.當(dāng)用戶調(diào)用send函數(shù)接口發(fā)送時(shí)候,數(shù)據(jù)層判斷currentActionID狀態(tài),如果是finished,或error,aborted,waiting表明沒(méi)有新建的任務(wù),
S5.數(shù)據(jù)層創(chuàng)建一個(gè)新任務(wù),狀態(tài)設(shè)置為created, 將injectedStatus列置為true,然后執(zhí)行參數(shù)收集最核心的一個(gè)動(dòng)作,調(diào)用時(shí)間處理函數(shù),
S6. 將時(shí)間處理函數(shù)添加到事件隊(duì)列末尾,同時(shí)將超時(shí)時(shí)間設(shè)置為0秒;
S7.這樣一系列的send函數(shù)調(diào)用一結(jié)束時(shí),這個(gè)時(shí)間處理函數(shù)將被調(diào)用,請(qǐng)求將被發(fā)送出去。