.each()$ ajax完成后显示消息

时间:2012-08-07 20:07:58

标签: ajax each complete

我需要在每个()完成其中的所有任务后显示一些文本。但它似乎正在运行异步和“完成”。显示得太早。我试图使用延迟,但没关系。正如您所看到的,我将成功和失败信息发送到模式以显示哪些记录已保存或失败。所有$ ajax调用完成后,'done'需要完成。任何帮助将不胜感激。

    $(".QueueGrid tbody > tr").each(function () {
        dcn = "";
        if ($(this).find(".chkOtherSelected").prop("checked")) {
            claimnum = $(this).find("td:eq(2)").text();
            dcn = $(this).find("td:eq(5)").text();
            $.ajax({
                type: "POST",
                url: "Approval_Inbox.aspx/SaveNote",
                data: "{dcn:'" + dcn + "',note:'" + note + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                cache: false,
                timeout: 8000,
                beforeSend: function () {
                    str = "- " + dcn + "<br />";
                },
                success: function (data) {
                    _savedSucess += str;
                },
                error: function () {
                    _savedFail += str;
                },
                complete: function (data) {
                    $("#divMassMessage").fadeIn("fast");
                    $("#divMassMessage").center();
                    $('#MainContent_savedSucess').html(_savedSucess);
                    $('#MainContent_savedFail').html(_savedFail);
                }
            });
        }
    });
    $(".saveComplete").html("done.");

2 个答案:

答案 0 :(得分:0)

AJAX,但它的性质不同,是异步的。您可以强制它同步(async:false),但这会在请求期间锁定浏览器。

或者,您可以计算发出的请求数,然后每次都调用一个函数。计算完成次数以及何时与呼叫次数匹配,触发警报。

答案 1 :(得分:0)

在AJAX完成函数中,您可以检查this是否是您正在解析的元素数组的最后一个成员,即获取{{1}中元素数量的计数数组并检查当前元素是否等于数组的长度。如果是,请写完成的消息。如果没有,还有更多要素可以循环使用。