AJAX实现延时顺序请求多个URL
作者:CNLei 来源:CNLEI.Blog 发布时间:2007-12-06 18:32:00
标签:url,请求,ajax
因DWS内核目前支持的线程数很少,个人门户首页打开后,如果并发请求加载的模块数过多,很容易导致DWS崩溃,故而给之前写的AJAX类加了个顺序请求的方法:run(arr,obj)
实现了以下功能:
>> 自动延时顺序提交Ajax请求
>> 可指定:两次请求之间的延时毫秒数(默认为100毫秒,最小间隔为5毫秒)
>> 可指定:在请求过程中出错时,是否忽略错误转入下一请求序列(默认为忽略错误执行下一请求)
>> 可指定:顺序请求过程中,是否触发"onloadding"处理函数
>> 可指定: Ajax提交方式(默认为:get)
>> 可定义: 整个系列请求完成后回调处理函数
代码如下:
run :function(a,o){//Ajax Run Seral Request, last update:2007-12-3 11:41
/*
@arr: Array型,必选,AJAX提交队列,二维数组,格式:
[["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id=11",testFunc],
["/lfw/dwsFw/example/class/AJAX/getNowTime.aspx?id=12",testFunc],
["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id=12",testFunc],
["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id=13",testFunc]]
@obj : Object型,请示参数配置,可选,该参数具备以下属性
@obj.method: String型,AJAX提交方式,可选,取值如下:
(1)"GET" : get method, default
(2)"POST" : post method
(3)"SUBMIT" : submit form, 待完善中...
@obj.speed: Number型,延时毫秒数,可选
默认值: 100
最低值: 5
@obj.stop: 布尔型,可选,取值:
(1)true : On Error Stop
(2)false : On Error Resume Next, default
@obj.onload: 布尔型,是否显示"is onloading"提示,可选,取值:
(1)true : Show Loadding MSG, default
(2)false : not Show Loadding MSG
@obj.onend : Function型,队列处理请求完毕后的回调函数,可选
*/
var self=this,W=window,ST="setTimeout",F=false,T=true,S="speed",X="POST",Y="GET",Z="method",L="length",O="object";
var c,m=Y,f,g=F,l=T,t=100,u;
if (a[L]>0){
c=a.shift();//Only for 5.5
if (typeof(o)==O){
t = o[S]?parseInt(o[S]):t;
t = t>5 ? t : 100;
m = o[Z]?o[Z].toUpperCase()==X?X:Y:Y;
g = o.stop?T:F;
l = !o.onload?F:T;
}
if (typeof(c)==O && c[L]>1){
u=c[0],f=self.func(c[1]);
u=u.split("?");
self.load(u[0],u[1],function(s,b,u){
if (b!="1.0"){
f(s,b,u);
if (b=="4.200" || !g){
W[ST](function(){self.run(a,o);},t);
}
} else {
l?f(s,b,u):"";
}
},m);
} else {
if (!g){
W[ST](function(){self.run(a,o);},t);
}
}
} else {
if (o.onend && typeof(o.onend)=="function"){
o.onend();
} else {
//alert("运行完成");
}
}
}
用法举例:
<ol id="testAjax">
<li id="testAjax_0">数据更新中,请稍候...</li>
<li id="testAjax_1"></li>
<li id="testAjax_2"></li>
<li id="testAjax_3"></li>
<li id="testAjax_4"></li>
<li id="testAjax_5"></li>
</ol>
---------------------------------------------------------------------------------
var arrTemp = [];
for (var ii=0; ii<10;ii++) {
arrTemp[arrTemp.length]=["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id="+ii,"testAjax_"+((ii%5)+1)+""];
}
DWS.PCN.AJAX.run(arrTemp,
{ speed:1000,
onend:function(){
//alert("全部加载完毕!");
$DOM().$("testAjax_0").innerHTML = "数据更新完毕!";
}
}
);
var testFunc = function(s,b,x){alert("TEXT:\n"+s+"\n\nURL:\n"+x+"");};
DWS.PCN.AJAX.run([
["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id=11",testFunc],
["/lfw/dwsFw/example/class/AJAX/getNowTime.aspx?id=12",testFunc],
["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id=12",testFunc],
["/lfw/dwsFw/example/class/AJAX/getNowTime.asp?id=13",testFunc]
],
{ speed:1000,
stop:false,
method:"get",
onload:false,
onend:function(){alert("全部加载完毕!");}
}
);
0
投稿
猜你喜欢
- 即使MyISAM表格式非常可靠(SQL语句对表做的所有改变在语句返回之前被写下),如果下列任何事件发生,你依然可以获得损坏的表:&m
- 打开VB6,新建ActiveX DLL 2、在工程引用中加入Microsoft Active Server Pages Object Lib
- 1、XML 是什么?XML仅仅是一种数据存放格式,这种格式是一种文本(虽然XML规范中也提供了存放二进制数据的解决方案)。事实上有很多文本格
- 有些朋友看到这个标题可能会有疑问,难道在视图中使用*符号还有何要注意的地方吗?对于这个问题,我们先不必回答,先看一下例子吧。 我这里,使用的
- 前言:书终于完稿了,我也有了一些自己的时间,于是决定将书中讲到的一些比较常见的知识点整理出来,发在Blog里面。当然也不会完全发表出来,毕竟
- 写一个循环删除的过程。 create or replace procedure delBigTab(p_TableName in varch
- 很久之前就对jQuery.animate的实现非常感兴趣,不过前段时间很忙,直到前几天端午假期才有时间去研究。jQuery.animate的
- ASP日期和时间函数我们经常会用到,本文列出了12个常用的asp日期和时间函数的语法及用法以作备忘!1.Now Now() 取
- 在开始聊我在阿里四个月的网页推广设计之前,我想先来说说我对平面设计和网页设计的认识。它们之间的交集。1.它们都是集艺术创作、电脑技术和数字技
- 今天搭了个“发短信”的页面,找朋友测试,没想到一位大侠直接弄了本长篇小说发我手机上……为了我的宝贝手机能继续健康澎湃,给文本区域(texta
- 导语:排版是一门艺术,也是一门技巧。我们每天都能在报纸,书籍等各种媒介上看到排版,或精美,或丑陋。如何能在准确传递信息的同时,又能排出精美的
- 尽管 JavaScript 历史上使用冗长而令人生厌的代码块来标的特定浏览器的时期已经结束了,但是偶尔使用一些简单的代码块和对象检测来确保一
- 最近一直在做Dnn模块的开发,过程中碰到这么一个问题,需要同时插入N条数据,不想在程序里控制,但是SQL Sever又不支持数组参数.所以只
- 有两个服务器,装了两个数据库,一个是主的,一个是备用的,下面的的功能就将主数据库的数据库,实时同步到备份数据库上,使他们的数据内容,基本上保
- 见下,把数字转成条形图、条形码的一个程序:<%Sub ShowChart(ByRef aValues,
- SQL Server 阻止了对组件 'Ad Hoc Distributed&nbs
- 如果要问做什么事是最有吸引力,那就是创建Web应用。Web设计者们对设计交互式的Web没有什么更好的办法,却对我们做桌面软件的同事投去少许羡
- 我想没多少人敢保证写JavaScript能不用调试,那选择用什么方式调试会比较好呢?告别了我最爱的alert("MM")
- 这是一种相对比较复杂的图表,但是仍然遵循上篇中提出的最基本的思路。本例中使用的定义列表标签dl可能平常我们见得不多,一般我们在做列表的时候通
- 在Google Chrome浏览器出来之前,我一直使用FireFox,因为FireFox的插件非常丰富,更因为FireFox有强大的Fire