Ajax轮询,而另一个ajax正在运行

时间:2016-04-15 13:54:29

标签: javascript c# jquery ajax asp.net-mvc

我的页面上有一个表单。当您提交表单时,我将Ajax调用发送到服务器。服务器端是C#asp.net

然后服务器上的控制器正在做某事并将当前状态保存到Session中。 ajax呼叫大约需要3分钟。

所以我想设置一个ajax轮询脚本,它会每隔5秒向服务器发送一次ajax请求,并从Session读取当前的stat并更新前端。

问题是ajax轮询调用正在等待第一个ajax完成。

因此,当第一个ajax运行并在服务器端执行某些操作并更新Session中的当前状态时,我想要另一个轮询脚本,同时从会话中读取此状态,但问题是它只是等待第一个ajax到完成。

这里有什么问题。我对会话知之甚少,只是无法弄清问题是什么以及如何使其发挥作用。

function installation () {
    var intervalID = setInterval(function () { checkStatus() }, 5000);
    var data = {//some data};

    $.post("/WebDomain/Installation", data, function (result) {
        clearInterval(intervalID);
        console.log(result);
    });
};

function checkStatus()
{
    $.post("/WebDomain/GetInstallStatus", function (result) {
            console.log(result.Status);
    });
}

1 个答案:

答案 0 :(得分:0)

    function installation () {

        var data = {//some data};

        $.post("/WebDomain/Installation", data, function (result) {
           setTimeout(function(){ checkStatus(); }, 5000);
        });
    };

    function checkStatus()
    {
        $.post("/WebDomain/GetInstallStatus", function (result) {
               installation ();
        });
    }


   $(document).ready(function(){

    setTimeout(function(){ checkStatus(); }, 5000);

    });

希望它会有所帮助

Explanation: after 5sec of your dom is ready checkStatus() will call,
if success only  installation (); will call 
In installation (); success we are again calling checkStatus(). 
now you can check some condition for breaking this iterations