ajax的实时进度

本文关键字:实时 ajax | 更新日期: 2023-09-27 18:00:04

我正在使用asp.net mvc 4.0剃须刀

在我的控制器中,我有5个存储过程要在单击按钮时执行。这个过程运行良好。但是每个过程需要30-60秒才能执行。在这段时间里,我可以在javascript的帮助下显示一个.GIF图像(正在处理…)。但是,在完成每个SP的执行后,我必须在视图页面的某个位置显示一条消息。类似:

  1. "dbExcel正在处理"
  2. "dbExcel进程已完成"
  3. "dbCSV正在处理"
  4. "dbCSV进程已完成"。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

我已经了解到我必须使用ajax来完成这项工作。我对此一无所知,而且我有很短的时间无法很好地学习ajax并自己找到解决方案。我想要一个简单的指导方针来解决这个问题。

ajax的实时进度

在MVC中为Ajax调用提供服务已经足够简单了。您可以在控制器中定义以JSON格式而不是页面视图返回数据的操作,并使用jQuery或类似方法从JavaScript调用这些操作。

以下是一个示例控制器方法,用于将当前时间获取为Ticks:

public class HomeController : Controller
{
...
    public JsonResult GetTicks()
    {
        return Json(DateTime.Now.Ticks, JsonRequestBehavior.AllowGet);
    }
}

以及调用它的jQuery调用:

$.ajax({ 
    url: "/Home/GetTicks", 
    cache: false, 
    success: function (result) {
        alert(result);
    }
});

您可以使用此技术轮询服务器以了解长期运行任务的当前状态,并在页面上显示结果。我会创建两个控制器操作——一个用于启动在工作线程中运行的任务,另一个用于报告任务的进度。

我强烈建议使用类似Firebug的东西来检查ajax调用的网络请求/响应数据。当我刚开始做这件事的时候,它帮了我很多。