在Javascript中,如何启动服务器端进程并监视其输出直到完成?

时间:2011-08-29 15:04:22

标签: javascript jquery asp.net-mvc asp.net-mvc-3 jquery-ui

在我的Web应用程序中,我希望能够在Web服务器上启动具有某些参数的进程,并在文本区域中连续显示进程的输出,直到完成为止。如何使用Javascript完成此操作?我正在使用jQuery和ASP.NET MVC 3。

4 个答案:

答案 0 :(得分:4)

您可以使用2种操作方法和javascript计时器

来完成此操作
[HttpPost]
public JsonResult StartProcess()
{
    StartTheMachine();
    return new JsonResult() { Data = "Started" };
}

[HttpGet]
public JsonResult GetProcessUpdate()
{
    return new JsonResult() 
    {
        Data = GetUpdate(), 
        JsonRequestBehavior = JsonRequestBehavior.AllowGet 
    };
}

在你看来是这样的:

$.post("<%=Url.Action("StartProcess") %>", function(data) {
    // do something with data "Started" and start timer
    setTimeout(GetUpdate, 5000);
});

function GetUpdate()
{
    $.get("<%=Url.Action("GetUpdate") %>", function(data) {
        if (data.Complete) // or some way to tell it has finished
        {
            // do something with other data returned
        }
        else
        {
            // call again if not finished
            setTimeout(GetUpdate, 5000);
        }
    });
}

答案 1 :(得分:2)

我认为你需要使用一些新的东西。详情请见:

SignalR according to Scott Hanselman

Node.js according to Scott Hanselman

话虽如此,它是全新的,我仍在理解中。但它看起来就像这种发展的方式。

答案 2 :(得分:1)

您需要定期向服务器端发送一个ajax帖子(或获取)并获取进程状态。

$.get("controler/ActionToReturnStatusView", null,
   function(data){
     alert("status " + data);
   });

答案 3 :(得分:1)

可以使用彗星编程。 可以尝试HTML 5中支持的Web worker