javascript - JSON .each 完成时的 Jquery 触发事件

标签 javascript jquery asp.net ajax

我有以下代码使用 Jquery 和 asp.net ping 计算机列表。

function ping() {
    $('#progress').css("display", "");
    $('.comp').each(function () {
        var $computer = $(this);            
        $.getJSON('pingcomputer.aspx', { computer: $(this).attr("rel") }, function (data) {
            if (data.Status == '1') {
                $($computer).attr("src", "ok.png");
            }
            else {
                $($computer).attr("src", "nok.png");
            }
        })
    })
    $('#progress').css("display", "none");
}

ping 正常。 在 ping 开始之前,我想让#progress 可见(一张图片) 在所有计算机都被 ping 后,我想再次隐藏它。

问题是调用该函数时#progress 图像会立即隐藏。 如何检测所有“pingcomputer.aspx”页面何时完成加载?

最佳答案

添加一个计数器来检查已完成的请求数是否与已开始的请求数相同:

function ping() {
    $('#progress').css("display", "");
    var count = 0,
        total = $(".comp").length;
    $('.comp').each(function () {
        var $computer = $(this);     

        $.getJSON('pingcomputer.aspx', { computer: $(this).attr("rel") }, function (data) {
            count++;     
            if (data.Status == '1') {
                $($computer).attr("src", "ok.png");
            }
            else {
                $($computer).attr("src", "nok.png");
            }
            if (count==total) $('#progress').css("display", "none");
        })
    })

}

关于javascript - JSON .each 完成时的 Jquery 触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557319/

相关文章:

javascript - 一次性转换所有类

ASP.NET [ScriptIgnore] 不适用于相关对象

c# - 如何使用 C# 从父 Gridview 获取值

javascript - 使用 JS 或 Jquery 读取 HTML 注释

javascript - 如何使用angularjs从数组中删除时间

javascript - Jade模板代码编辑器

javascript - 验证表单并将数据发送到 php 文件

javascript - 使用表单字段值作为对 JavaScript 变量的引用

c# - Gridview 在编辑前检查约束

javascript - 如何从mountebank响应 block 中的另一个js文件调用函数