1

总结:我必须使用 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 的新手。

之前谢谢你

4

1 回答 1

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);
        }

    });


}
于 2013-07-24T08:59:04.030 回答