В Javascript, как запустить процесс на стороне сервера и контролировать его вывод до завершения? - PullRequest
4 голосов
/ 29 августа 2011

В моем веб-приложении я хотел бы иметь возможность запускать процесс с определенными параметрами на веб-сервере и непрерывно отображать результаты процесса в текстовой области до его завершения.Как я могу сделать это с помощью Javascript?Я использую jQuery вместе с ASP.NET MVC 3.

Ответы [ 4 ]

4 голосов
/ 29 августа 2011

Вы можете сделать это с помощью 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);
        }
    });
}
2 голосов
/ 29 августа 2011

Я думаю, вам нужно использовать кое-что из нового материала. Подробнее см .:

SignalR по Скотту Хансельману

Node.js по Скотту Хансельману

Сказав это, это все новое, и я все еще в стадии разработки. Но похоже, как идет развитие такого рода.

1 голос
/ 29 августа 2011

можно использовать кометное программирование. можно попробовать веб-работников, поддерживаемых в HTML 5

1 голос
/ 29 августа 2011

вам необходимо отправлять ajax-сообщение (или получать) через регулярные промежутки времени на сторону сервера и получать статус процесса.

$.get("controler/ActionToReturnStatusView", null,
   function(data){
     alert("status " + data);
   });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...