AJAX实现延时顺序请求多个URL

作者:CNLei 来源:CNLEI.Blog 时间:2007-12-06 18:32:00 

因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("全部加载完毕!");}
  }
);
标签:url,请求,ajax
0
投稿

猜你喜欢

  • asp中日期时间函数介绍

    2013-06-01 20:01:03
  • 如何获知文件被改动的情况?

    2009-11-24 20:42:00
  • ASP:一个网站空间多个域名访问

    2008-11-21 17:03:00
  • 清除浮动新说

    2009-12-25 18:49:00
  • 一个不错的javascript加密解密算法源码

    2010-03-28 13:12:00
  • asp如何设置cookie的过期时间

    2008-02-29 13:36:00
  • Linux安装卸载Mysql数据库

    2011-01-29 16:45:00
  • jQuery代码的14条改善技巧[译]

    2009-12-02 10:02:00
  • SQL Server 压缩日志及数据库文件大小

    2009-05-13 10:29:00
  • css学习笔记: css新闻列表的特殊做法

    2009-07-19 14:25:00
  • 有序列表 li ol

    2008-07-30 12:31:00
  • WEB2.0网页制作标准教程(5)head区的其他设置

    2007-11-13 13:28:00
  • 讲解MySQL数据库的数据类型和建库策略

    2008-12-17 14:39:00
  • JavaScript 中为 Date 类实现 DateAdd 方法

    2008-04-03 16:19:00
  • 用好FrontPage2003的九大功能

    2008-02-21 14:29:00
  • 发散后的期望

    2008-07-31 18:32:00
  • 解决大字段在Form中Post出错的方法

    2008-04-17 14:00:00
  • MYSQL数据库常用命令集合

    2009-02-26 16:01:00
  • 胜过语言的图形符号

    2009-05-06 12:43:00
  • 10点优化sql数据库技巧

    2008-06-09 15:00:00
  • asp之家 网络编程 m.aspxhome.com