首页> 中国专利> 一种基于数据层的改进ajax性能的方法

一种基于数据层的改进ajax性能的方法

摘要

本发明公开了一种基于数据层的改进ajax性能的方法,它包括初始化步骤、任务迁徙步骤、动画效果步骤、参数收集,数据层为每个任务建立一张json数组表,维护每个任务的状态,控制任务迁移;客户调用send函数时,将actionprompt标志设置为true,数据层显示等待动画,和提示文字;在IE中使用jquery方法,将XML字符串转换为jquery对象。本发明提升了ajax对浏览器的兼容性,同时在等待服务器响应的时候通过动画和文字信息来提示用户,告知用户当前任务的状态,并且用户可以任意组合参数,在客户端可以制作一个数据就发送一个请求,不需要将所有的数据都制作完再发送。

著录项

  • 公开/公告号CN106293714A

    专利类型发明专利

  • 公开/公告日2017-01-04

    原文格式PDF

  • 申请/专利权人 四川天邑康和通信股份有限公司;

    申请/专利号CN201610619234.3

  • 发明设计人 邱东;

    申请日2016-07-29

  • 分类号G06F9/44;

  • 代理机构成都金英专利代理事务所(普通合伙);

  • 代理人袁英

  • 地址 610000 四川省成都市大邑县晋原镇工业大道198号

  • 入库时间 2023-06-19 01:14:33

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-14

    授权

    授权

  • 2017-02-01

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20160729

    实质审查的生效

  • 2017-01-04

    公开

    公开

说明书

技术领域

本发明涉及一种基于数据层的改进ajax性能的方法。

背景技术

客户端和服务端的通信有下面几种方法:

Form表单的GET方法,只能在<form>元素中使用,参数编码到url地址中,长度有限

Form表单的POST方法,只能在<form>元素中使用,参数在http header中发给服务器,数据量可以很大

Cookie,浏览器只是提供有限的接口,用于session会话场合。其它领域并不适合

Cgi方式,数据嵌入在页面中一起返回给浏览器,完全不适合插件开发。

以及Ajax方式,其特点在于,html页面可以在任何地方使用javascript向服务端发送ajax请求,同时注册一个回调函数。Ajax是异步的,发送完ajax请求后页面工作就结束,不用同步等待服务端的数据。当浏览器收到服务器返回的数据后,浏览器就会自动调用刚才注册的回调函数。在回调函数中,程序员可以做任何事情,比如将数据显示在html之中。

如果插件需要和服务端通信,Ajax是最好的选择。因为从设计的角度讲,它将html和数据完全分开了,调试方便,功能强大,你可以在回调函数中做任何事情。

如果只是发送少数几个数据请求,直接调用ajax的POST,或GET请求就可以了。但是如果要发送上百个请求,在复杂的插件中,这是完全可能的,直接调用就出现一些问题,我们需要一个数据层,封装ajax,提供更强的通信功能。

发明内容

本发明的目的在于克服现有技术的不足,提供一种基于数据层的改进ajax性能的方法。

本发明的目的是通过以下技术方案来实现的:一种基于数据层的改进ajax性能的方法,包括初始化步骤、任务迁徙步骤、动画效果步骤,参数收集包括以下步骤:

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

S11.创建数据层DataLayer,采用命名空间实现,所述的命名空间采用json语法实现;

S12.数据层将每个ajax视为一个任务,并为其赋予一个任务编号;其中,对于每一个任务,数据层建立一张表格,维护每个任务的状态;

S13.数据层DataLayer提供一个函数接口send,参数为json对象;

所述的任务迁徙步骤包括以下子步骤:

S21:数据层收到客户端向服务端发送的请求后,为任务分配一个id号,将任务状态设置为新建created;

S22:收集参数,当参数收集完毕,向服务端发送ajax请求,将任务状态设置为waiting,同时超时计数器开始计数;

S23:当超时计数器计数结束之前,收到服务端返回的结果后,将任务状态设置为finished;当超时计数器计数结束服务端仍然没有返回结果,任务将被终止,从waiting状态直接进入aborted状态;

所述的嵌入动画效果步骤为:

S31.使用absoulte布局,在Z轴最顶端加入div元素,div的visibility属性设置为true,嵌入一个等待动画图片;

S32.客户调用send函数时,数据层将actionprompt设置为true,数据层将显示等待动画,如果actionprompt为false,将div的visibility属性设置为false。

所述的json对象的结构包括:

Actionid:由数据层datalayer自动生成,表示任务编号;

Actionstatus:表示任务的状态,包括创建、等待、终止、错误;

Actionname:表示任务的名称;

Actionprompt:表示是否出现文字和动画提示请求在处理中;

Maximumwaitingtime:表示一个任务最长的等待时间,超出这个等待时间而服务端没有回应,数据层将终止任务运行;

Callbacksuccess,表示用来注册成功时候的回调函数;

Callbackfail,表示用来注册任务失败时的回调函数;

Waitingtip,当等待服务端回应的时候,给予用户的提示;

Url,指向服务端的地址,以所述的Actionname加上json后缀表示;

Atype,表示请求类型

Multi,表示能否重复请求的状态,当设置为false时候,禁止改同一个任务在状态处于create或者waitting时候反复发送。

所述的表格结构包括

Actionid:表示任务编号;

Actionname:表示任务的名称;

Actionstatus:表示任务的状态,包括创建、等待、终止、错误;

ajaxobj:ajax引用实例;

multi:表示能否重复请求的状态,当设置为false时候,禁止改同一个任务在状态处于create或者waitting时候反复发送:

injectedStatus:尾部是否置入特殊动作。

它还包括一个浏览器版本判断步骤:在每次任务状态切换之后打印任务信息之前,判断浏览器版本是否为console.log()函数所支持的版本,如果支持则调用console.log()函数进行打印,否则不调用。

在所述的浏览器版本判断步骤之后,还包括一个解析错误状态的转换步骤:ie浏览器解析服务端返回的xml字符串出错的情况下,在ajax error属性中注册回调函数,在这个函数中略过http头,定位到xml数据体,将其转换为jquery对象,将返回至客户端。

所述的参数收集包括以下步骤:

S1.在数据层这个json对象中加入属性currentActionID,指向任务表中正在处理的任务id;

S2.任务表中增加一列injectedStatus,表示是否已经向任务处理动作的末尾植入了一个特殊的动作;

S3.然后将任务状态设置为waiting即可;当服务器返回数据时候,在回调函数中,数据层将调用用户注册的回调函数,然后将任务状态设置为finished或者error;

S4.当用户调用send函数接口发送时候,数据层判断currentActionID状态,如果是finished,或error,aborted,waiting表明没有新建的任务,

S5.数据层创建一个新任务,状态设置为created,将injectedStatus列置为true,然后执行参数收集最核心的一个动作,调用时间处理函数,

S6.将时间处理函数添加到事件队列末尾,同时将超时时间设置为0秒;

S7.这样一系列的send函数调用一结束时,这个时间处理函数将被调用,请求将被发送出去。

本发明的有益效果是:一种基于数据层的改进ajax性能的方法,提升了ajax对IE浏览器的兼容性,弥补了IE浏览器对XML数据解析的不正确的缺点,同时在等待服务器响应的时候提供一个动画提示用户,告知用户当前任务的状态,并且用户可以任意组合参数,数据层自动判断参数是否填写完毕,然后发出请求,使编程接口更加友好,在客户端可以制作一个数据就发送一个请求,不需要将所有的数据都制作完再发送。

附图说明

图1为状态迁移图;

具体实施方式

下面结合附图进一步详细描述本发明的技术方案:一种基于数据层的改进ajax性能的方法,包括初始化步骤、任务迁徙步骤、动画效果步骤包括以下步骤:

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

S11.创建数据层DataLayer,采用命名空间实现,所述的命名空间采用json语法实现;

S12.数据层将每个ajax视为一个任务,并为其赋予一个任务编号;其中,对于每一个任务,数据层建立一张表格,维护每个任务的状态;

S13.数据层DataLayer提供一个函数接口send,参数为json对象;

如图1所示,所述的任务迁徙步骤包括以下子步骤:

S21:数据层收到客户端向服务端发送的请求后,为任务分配一个id号,将任务状态设置为新建created;

S22:收集参数,当参数收集完毕,向服务端发送ajax请求,将任务状态设置为waiting,同时超时计数器开始计数;

S23:当超时计数器计数结束之前,收到服务端返回的结果后,将任务状态设置为finished;当超时计数器计数结束服务端仍然没有返回结果,任务将被终止,从waiting状态直接进

入aborted状态;

所述的嵌入动画效果步骤为:

S31.使用absoulte布局,在Z轴最顶端加入div元素,div的visibility属性设置为true,嵌入一个等待动画图片;

S32.客户调用send函数时,数据层将actionprompt设置为true,数据层将显示等待动画,如果actionprompt为false,将div的visibility属性设置为false。

通过上传自定义的字符串来决定显示的文字信息;

同时在等待服务器响应的时候提供一个动画和文字信息来提示用户,告知用户当前任务的状态,

所述的json对象的结构包括:

Actionid:由数据层datalayer自动生成,表示任务编号;

Actionstatus:表示任务的状态,包括创建、等待、终止、错误;

Actionname:表示任务的名称;

Actionprompt:表示是否出现文字和动画提示请求在处理中;

Maximumwaitingtime:表示一个任务最长的等待时间,超出这个等待时间而服务端没有回应,数据层将终止任务运行;

Callbacksuccess,表示用来注册成功时候的回调函数;

Callbackfail,表示用来注册任务失败时的回调函数;

Waitingtip,当等待服务端回应的时候,给予用户的提示;

Url,指向服务端的地址,以所述的Actionname加上json后缀表示;

Atype,表示请求类型

Multi,表示能否重复请求的状态,当设置为false时候,禁止改同一个任务在状态处于create或者waitting时候反复发送。

表1

如表1所示,所述的表格结构包括:

Actionid:表示任务编号;

Actionname:表示任务的名称;

Actionstatus:表示任务的状态,包括创建、等待、终止、错误;

ajaxobj:ajax引用实例;

multi:表示能否重复请求的状态,当设置为false时候,禁止改同一个任务在状态处于create或者waitting时候反复发送:

injectedStatus:尾部是否置入特殊动作。

它还包括一个浏览器版本判断步骤:在每次任务状态切换之后打印任务信息之前,判断浏览器版本是否为console.log()函数所支持的版本,如果支持则调用console.log()函数进行打印,否则不调用。

在所述的浏览器版本判断步骤之后,还包括一个解析错误状态的转换步骤:ie浏览器解析服务端返回的xml字符串出错的情况下,在ajax error属性中注册回调函数,在这个函数中略过http头,定位到xml数据体,将其转换为jquery对象,将返回至客户端,

所述的浏览器版本判断步骤提升了ajax对IE浏览器的兼容性和解析错误状态的转换步骤弥补了IE浏览器对XML数据解析的不正确的缺点。

所述的参数收集包括以下步骤:

S1.在数据层这个json对象中加入属性currentActionID,指向任务表中正在处理的任务id;

S2.任务表中增加一列injectedStatus,表示是否已经向任务处理动作的末尾植入了一个特殊的动作;

S3.然后将任务状态设置为waiting即可;当服务器返回数据时候,在回调函数中,数据层将调用用户注册的回调函数,然后将任务状态设置为finished或者error;

S4.当用户调用send函数接口发送时候,数据层判断currentActionID状态,如果是finished,或error,aborted,waiting表明没有新建的任务,

S5.数据层创建一个新任务,状态设置为created,将injectedStatus列置为true,然后执行参数收集最核心的一个动作,调用时间处理函数,

S6.将时间处理函数添加到事件队列末尾,同时将超时时间设置为0秒;

S7.这样一系列的send函数调用一结束时,这个时间处理函数将被调用,请求将被发送出去。

因为当下一个send被调用时,因injectedStatus为true,特殊动作不会再植入到末尾使得用户可以任意组合参数,数据层自动判断参数是否填写完毕,然后发出请求,使编程接口更加友好,在客户端可以制作一个数据就发送一个请求,不需要将所有的数据都制作完再发送。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号