使用ajax实时进度

时间:2013-02-18 18:58:14

标签: c# ajax asp.net-mvc-4 asp.net-ajax

我正在使用 asp.net mvc 4.0 razor

在我的控制器中,我有5个存储过程来执行单击按钮。这个过程很好。但每个过程需要30-60秒才能执行。在这个时候,我可以借助javascript显示.GIF图像(处理...)。但是,在浏览页面的某个地方完成每个SP的执行后,我必须显示消息。喜欢:

  1. “dbExcel正在处理”
  2. “dbExcel process completed”
  3. “dbCSV正在处理”
  4. “dbCSV进程已完成” ................................. .................................
  5. 我了解到我必须使用 ajax 执行此操作。我对此一无所知,我有一段时间不能很好地学习ajax并自己找到解决方案。我想要一个简单的指导方针,我可以解决这个问题。

1 个答案:

答案 0 :(得分:1)

在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调用的网络请求/响应数据。当我开始使用这些东西时,它对我帮助很大。