Asp.net基于ajax和jquery-ui实现进度条

这篇文章主要介绍了Asp.net基于ajax和jquery-ui实现进度条,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

前台用ajax不停进行查询,直到任务完成。进度条用的是jquery-ui。后台用一般处理程序处理相应,进度信息保存在HttpContext.Application中。

代码作为简单示例,实际应用时应对资源释放、防止多线程混乱等做进一步控制。

效果图:

Asp.net基于ajax和jquery-ui实现进度条

代码:

前台:

 
 
 
 
 
 
    function GetProgress() {
      $.ajax({
        url: “/Handler1.ashx”,
        type: “POST”,
        data: { “RequestType”: “AjaxRequest”, “Method”: “GetProgress” },
        success: function (data) {
          if (data != -1) {
            //工作没有结束,继续查询进度
            setTimeout(GetProgress, 100);
            $(“#progress”).html(data);
            $(“#progressbar”).progressbar({ value: parseInt(data) });
          } else {
            //工作完成
            $(“#progress”).html(“done”);
            $(“#progressbar”).progressbar({ value: 100 });
            $(“#btn1”).attr(“disabled”, false);
          }
        }
      });
    }

    function DoWork() {
      //禁用按钮
      $(“#btn1”).attr(“disabled”, true);
      $.ajax({
        url: “/Handler1.ashx”,
        type: “POST”,
        data: { “RequestType”: “AjaxRequest”, “Method”: “DoWork” }
      });
      //开始查询进度
      setTimeout(GetProgress, 500);
    }
 

 

   
   
   

 

后台:

// 2015年12月16日 09:53:11
// David Huang
// 进度条示例
namespace ProgressTest
{
  using System;
  using System.Threading;
  using System.Web;

  ///

  /// Handler1 的摘要说明
  ///

  public class Handler1 : IHttpHandler
  {
    // context
    private HttpContext context;

    public bool IsReusable
    {
      get
      {
        return false;
      }
    }

    public void ProcessRequest(HttpContext context)
    {
      this.context = context;
      if (context.Request[“RequestType”] == “AjaxRequest”)
      {
        if (context.Request[“Method”] == “GetProgress”)
        {
          context.Response.Clear();
          context.Response.Write(this.GetProgress());
          context.Response.End();
        }
        else
        {
          this.DoWork();
        }
      }
    }

    ///

    /// 开始工作
    ///

    private void DoWork()
    {
      for (int i = 0; i < 100; i++)
      {
        // 记录进度
        // 实际应用中需要进一步控制(利用用户信息、cookies等),防止并发造成混乱
        this.context.Application[“progress”] = i + 1;
        Random r = new Random();
        Thread.Sleep(r.Next(10, 100));
      }
      // 完成后释放资源
      this.context.Application[“progress”] = null;
    }

    ///

    /// 查询进度
    ///

    /// 进度
    private int GetProgress()
    {
      if (this.context.Application[“progress”] != null)
      {
        return (int)this.context.Application[“progress”];
      }
      else
      {
        return -1;
      }
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

来源:脚本之家

链接:https://www.jb51.net/article/201282.htm

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:SEO优化专员,转转请注明出处:https://www.chuangxiangniao.com/p/896702.html

(0)
上一篇 2025年1月4日 00:44:35
下一篇 2025年1月4日 00:45:19

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论

联系我们

156-6553-5169

在线咨询: QQ交谈

邮件:253000106@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

联系微信