国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于數(shù)據(jù)層的改進(jìn)ajax性能的方法與流程

      文檔序號(hào):12362841閱讀:256來源:國知局

      本發(fā)明涉及一種基于數(shù)據(jù)層的改進(jìn)ajax性能的方法。



      背景技術(shù):

      客戶端和服務(wù)端的通信有下面幾種方法:

      Form表單的GET方法,只能在<form>元素中使用,參數(shù)編碼到url地址中,長度有限

      Form表單的POST方法,只能在<form>元素中使用,參數(shù)在http header中發(fā)給服務(wù)器,數(shù)據(jù)量可以很大

      Cookie,瀏覽器只是提供有限的接口,用于session會(huì)話場(chǎng)合。其它領(lǐng)域并不適合

      Cgi方式,數(shù)據(jù)嵌入在頁面中一起返回給瀏覽器,完全不適合插件開發(fā)。

      以及Ajax方式,其特點(diǎn)在于,html頁面可以在任何地方使用javascript向服務(wù)端發(fā)送ajax請(qǐng)求,同時(shí)注冊(cè)一個(gè)回調(diào)函數(shù)。Ajax是異步的,發(fā)送完ajax請(qǐng)求后頁面工作就結(jié)束,不用同步等待服務(wù)端的數(shù)據(jù)。當(dāng)瀏覽器收到服務(wù)器返回的數(shù)據(jù)后,瀏覽器就會(huì)自動(dòng)調(diào)用剛才注冊(cè)的回調(diào)函數(shù)。在回調(diào)函數(shù)中,程序員可以做任何事情,比如將數(shù)據(jù)顯示在html之中。

      如果插件需要和服務(wù)端通信,Ajax是最好的選擇。因?yàn)閺脑O(shè)計(jì)的角度講,它將html和數(shù)據(jù)完全分開了,調(diào)試方便,功能強(qiáng)大,你可以在回調(diào)函數(shù)中做任何事情。

      如果只是發(fā)送少數(shù)幾個(gè)數(shù)據(jù)請(qǐng)求,直接調(diào)用ajax的POST,或GET請(qǐng)求就可以了。但是如果要發(fā)送上百個(gè)請(qǐng)求,在復(fù)雜的插件中,這是完全可能的,直接調(diào)用就出現(xiàn)一些問題,我們需要一個(gè)數(shù)據(jù)層,封裝ajax,提供更強(qiáng)的通信功能。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種基于數(shù)據(jù)層的改進(jìn)ajax性能的方法。

      本發(fā)明的目的是通過以下技術(shù)方案來實(shí)現(xiàn)的:一種基于數(shù)據(jù)層的改進(jìn)ajax性能的方法,包括初始化步驟、任務(wù)遷徙步驟、動(dòng)畫效果步驟,參數(shù)收集包括以下步驟:

      所述的初始化步驟包括以下子步驟:

      S11.創(chuàng)建數(shù)據(jù)層DataLayer,采用命名空間實(shí)現(xiàn),所述的命名空間采用json語法實(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ù)層DataLayer提供一個(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ù)器開始計(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ù)端仍然沒有返回結(jié)果,任務(wù)將被終止,從waiting狀態(tài)直接進(jìn)入aborted狀態(tài);

      所述的嵌入動(dòng)畫效果步驟為:

      S31.使用absoulte布局,在Z軸最頂端加入div元素,div的visibility屬性設(shè)置為true,嵌入一個(gè)等待動(dòng)畫圖片;

      S32.客戶調(diào)用send函數(shù)時(shí),數(shù)據(jù)層將actionprompt設(shè)置為true,數(shù)據(jù)層將顯示等待動(dòng)畫,如果actionprompt為false,將div的visibility屬性設(shè)置為false。

      所述的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)畫提示請(qǐng)求在處理中;

      Maximumwaitingtime:表示一個(gè)任務(wù)最長的等待時(shí)間,超出這個(gè)等待時(shí)間而服務(wù)端沒有回應(yīng),數(shù)據(jù)層將終止任務(wù)運(yùn)行;

      Callbacksuccess,表示用來注冊(cè)成功時(shí)候的回調(diào)函數(shù);

      Callbackfail,表示用來注冊(cè)任務(wù)失敗時(shí)的回調(diào)函數(shù);

      Waitingtip,當(dāng)?shù)却?wù)端回應(yīng)的時(shí)候,給予用戶的提示;

      Url,指向服務(wù)端的地址,以所述的Actionname加上json后綴表示;

      Atype,表示請(qǐng)求類型

      Multi,表示能否重復(fù)請(qǐng)求的狀態(tài),當(dāng)設(shè)置為false時(shí)候,禁止改同一個(gè)任務(wù)在狀態(tài)處于create或者waitting時(shí)候反復(fù)發(fā)送。

      所述的表格結(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)作。

      它還包括一個(gè)瀏覽器版本判斷步驟:在每次任務(wù)狀態(tài)切換之后打印任務(wù)信息之前,判斷瀏覽器版本是否為console.log()函數(shù)所支持的版本,如果支持則調(diào)用console.log()函數(shù)進(jìn)行打印,否則不調(diào)用。

      在所述的瀏覽器版本判斷步驟之后,還包括一個(gè)解析錯(cuò)誤狀態(tài)的轉(zhuǎn)換步驟:ie瀏覽器解析服務(wù)端返回的xml字符串出錯(cuò)的情況下,在ajax error屬性中注冊(cè)回調(diào)函數(shù),在這個(gè)函數(shù)中略過http頭,定位到xml數(shù)據(jù)體,將其轉(zhuǎn)換為jquery對(duì)象,將返回至客戶端。

      所述的參數(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表明沒有新建的任務(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ā)送出去。

      本發(fā)明的有益效果是:一種基于數(shù)據(jù)層的改進(jìn)ajax性能的方法,提升了ajax對(duì)IE瀏覽器的兼容性,彌補(bǔ)了IE瀏覽器對(duì)XML數(shù)據(jù)解析的不正確的缺點(diǎn),同時(shí)在等待服務(wù)器響應(yīng)的時(shí)候提供一個(gè)動(dòng)畫提示用戶,告知用戶當(dāng)前任務(wù)的狀態(tài),并且用戶可以任意組合參數(shù),數(shù)據(jù)層自動(dòng)判斷參數(shù)是否填寫完畢,然后發(fā)出請(qǐng)求,使編程接口更加友好,在客戶端可以制作一個(gè)數(shù)據(jù)就發(fā)送一個(gè)請(qǐng)求,不需要將所有的數(shù)據(jù)都制作完再發(fā)送。

      附圖說明

      圖1為狀態(tài)遷移圖;

      具體實(shí)施方式

      下面結(jié)合附圖進(jìn)一步詳細(xì)描述本發(fā)明的技術(shù)方案:一種基于數(shù)據(jù)層的改進(jìn)ajax性能的方法,包括初始化步驟、任務(wù)遷徙步驟、動(dòng)畫效果步驟包括以下步驟:

      所述的初始化步驟包括以下子步驟:

      S11.創(chuàng)建數(shù)據(jù)層DataLayer,采用命名空間實(shí)現(xiàn),所述的命名空間采用json語法實(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ù)層DataLayer提供一個(gè)函數(shù)接口send,參數(shù)為json對(duì)象;

      如圖1所示,所述的任務(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ù)器開始計(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ù)端仍然沒有返回結(jié)果,任務(wù)將被終止,從waiting狀態(tài)直接進(jìn)

      入aborted狀態(tài);

      所述的嵌入動(dòng)畫效果步驟為:

      S31.使用absoulte布局,在Z軸最頂端加入div元素,div的visibility屬性設(shè)置為true,嵌入一個(gè)等待動(dòng)畫圖片;

      S32.客戶調(diào)用send函數(shù)時(shí),數(shù)據(jù)層將actionprompt設(shè)置為true,數(shù)據(jù)層將顯示等待動(dòng)畫,如果actionprompt為false,將div的visibility屬性設(shè)置為false。

      通過上傳自定義的字符串來決定顯示的文字信息;

      同時(shí)在等待服務(wù)器響應(yīng)的時(shí)候提供一個(gè)動(dòng)畫和文字信息來提示用戶,告知用戶當(dāng)前任務(wù)的狀態(tài),

      所述的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)畫提示請(qǐng)求在處理中;

      Maximumwaitingtime:表示一個(gè)任務(wù)最長的等待時(shí)間,超出這個(gè)等待時(shí)間而服務(wù)端沒有回應(yīng),數(shù)據(jù)層將終止任務(wù)運(yùn)行;

      Callbacksuccess,表示用來注冊(cè)成功時(shí)候的回調(diào)函數(shù);

      Callbackfail,表示用來注冊(cè)任務(wù)失敗時(shí)的回調(diào)函數(shù);

      Waitingtip,當(dāng)?shù)却?wù)端回應(yīng)的時(shí)候,給予用戶的提示;

      Url,指向服務(wù)端的地址,以所述的Actionname加上json后綴表示;

      Atype,表示請(qǐng)求類型

      Multi,表示能否重復(fù)請(qǐng)求的狀態(tài),當(dāng)設(shè)置為false時(shí)候,禁止改同一個(gè)任務(wù)在狀態(tài)處于create或者waitting時(shí)候反復(fù)發(fā)送。

      表1

      如表1所示,所述的表格結(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)作。

      它還包括一個(gè)瀏覽器版本判斷步驟:在每次任務(wù)狀態(tài)切換之后打印任務(wù)信息之前,判斷瀏覽器版本是否為console.log()函數(shù)所支持的版本,如果支持則調(diào)用console.log()函數(shù)進(jìn)行打印,否則不調(diào)用。

      在所述的瀏覽器版本判斷步驟之后,還包括一個(gè)解析錯(cuò)誤狀態(tài)的轉(zhuǎn)換步驟:ie瀏覽器解析服務(wù)端返回的xml字符串出錯(cuò)的情況下,在ajax error屬性中注冊(cè)回調(diào)函數(shù),在這個(gè)函數(shù)中略過http頭,定位到xml數(shù)據(jù)體,將其轉(zhuǎn)換為jquery對(duì)象,將返回至客戶端,

      所述的瀏覽器版本判斷步驟提升了ajax對(duì)IE瀏覽器的兼容性和解析錯(cuò)誤狀態(tài)的轉(zhuǎn)換步驟彌補(bǔ)了IE瀏覽器對(duì)XML數(shù)據(jù)解析的不正確的缺點(diǎn)。

      所述的參數(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表明沒有新建的任務(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ā)送出去。

      因?yàn)楫?dāng)下一個(gè)send被調(diào)用時(shí),因injectedStatus為true,特殊動(dòng)作不會(huì)再植入到末尾使得用戶可以任意組合參數(shù),數(shù)據(jù)層自動(dòng)判斷參數(shù)是否填寫完畢,然后發(fā)出請(qǐng)求,使編程接口更加友好,在客戶端可以制作一個(gè)數(shù)據(jù)就發(fā)送一個(gè)請(qǐng)求,不需要將所有的數(shù)據(jù)都制作完再發(fā)送。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1