多个Ajax调用在一个页面中调用多个超时

时间:2013-07-24 08:29:08

标签: c# ajax jquery

Summery:我必须使用C#从服务(托管在多个服务器上)获取多个数据,最后使用ajax调用将它们显示在一个页面上。考虑到最终的显示格式包含由Jquery创建并由CSS设置的图表和进度。

部分代码:

// Once Called Here and Timer Will Go On
UpdateDataA();
function UpdateDataA() {
    $.ajax({
        type: "POST",
        async: true,
        url: "Default.aspx/GetData",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (r) {                               
            var $s = $(".second");
            $s.val(r.d[0]).trigger("change");
            updateProgressA(r.d[1]);
            updateProgressB(r.d[2]);
            updateNetworkData(bytesToSize(r.d[5], 2), bytesToSize(r.d[6], 2));
        },
        error: function (msg) {
            alert(msg.error);
        }

    });

    setTimeout(function () { UpdateDataA(); }, 1000);//Timer
}

考虑更多这样的电话。

问题:定时器间隔未按设置的间隔更新。一个元素更新正确然后等待其他元素完成,而不应该。但我需要一起更新所有内容。通过这种方式,如果一次呼叫崩溃,其他人将会死亡。

问题:我该怎么做或我的错误是什么?

注意:我是jquery和ajax的新手。

先谢谢你

1 个答案:

答案 0 :(得分:1)

忽略我对间隔的评论。我想你需要跟踪你的计时器:

timerA = setTimeout(function () { UpdateDataA(); }, 1000);

并清除更新功能直到任务完成

var timerA;

// Once Called Here and Timer Will Go On
UpdateDataA();
function UpdateDataA() {
    clearTimeout(timerA);
    $.ajax({
        type: "POST",
        async: true,
        url: "Default.aspx/GetData",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (r) {                               
            var $s = $(".second");
            $s.val(r.d[0]).trigger("change");
            updateProgressA(r.d[1]);
            updateProgressB(r.d[2]);
            updateNetworkData(bytesToSize(r.d[5], 2), bytesToSize(r.d[6], 2));
            timerA = setTimeout(function () { UpdateDataA(); }, 1000);//Restart time after task is complete
        },
        error: function (msg) {
            alert(msg.error);
        }

    });


}