AJax技术

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

字号+ 作者:H5之家 来源:H5之家 2017-11-24 16:00 我要评论( )

因DWS内核目前支持的线程数很少,个人门户首页打开后,如果并发请求加载的模块数过多,很容易导致DWS崩溃,故而给之前写的AJAX类加了个顺序请求的方法:run(arr,

因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>
<li>数据更新中,请稍候...</li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></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("全部加载完毕!");}
  }
);

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 第八章 EL、JSTL、Ajax技术

    第八章 EL、JSTL、Ajax技术

    2017-11-24 16:07

  • ajax实现输入提示效果

    ajax实现输入提示效果

    2017-11-24 15:32

  • PHP与Ajax实现登录验证小Demo

    PHP与Ajax实现登录验证小Demo

    2017-11-24 15:10

  • CI学习AJAX提交表单,审核

    CI学习AJAX提交表单,审核

    2017-11-24 09:08

网友点评