【问题标题】:Real time progress with ajaxajax实时进度
【发布时间】:2013-02-03 07:19:32
【问题描述】:

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

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

  1. “dbExcel 正在处理”
  2. “dbExcel 进程完成”
  3. “正在处理 dbCSV”
  4. “dbCSV 进程完成” ................................... ..................................

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

【问题讨论】:

  • 请使用粗体字。它不能帮助你传达你的问题,而且非常分散注意力。不过,这不是我的反对意见。
  • 这不是一个简单的问题。如果你不愿意投入大量的时间和精力,那么你将无法解决这个问题。
  • 可能你的理解不准确。我分享了我的工作时间表,很短。@AlexFilipovici
  • 无论如何我都必须这样做:) @Servy
  • @decoyer 没关系,只是准备实际做一些工作,而不是指望一个简单容易的解决方案,因为没有 easy 解决方案。

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


【解决方案1】:

在 MVC 中处理 Ajax 调用非常简单。您可以在控制器中定义以 JSON 格式而不是页面视图返回数据的操作,并使用 jQuery 或类似工具从 JavaScript 调用这些操作。

这是一个获取当前时间为刻度的示例控制器方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多