需要在上一个AJAX调用完成后进行这些调用

时间:2011-02-17 15:24:03

标签: .net jquery html ajax

所以我有一个用户选择某些复选框后运行的JavaScript方法。此方法使一个AJAX调用呈现“标题”视图,然后为每个选定的复选框进行AJAX调用,然后也附加这些视图。

问题在于,当我使用JQuery循环检查复选框并为每个复选框进行AJAX调用时,它只是以正确的顺序依次进行一堆AJAX调用,但它们会被渲染在不同的时间取决于每个人花多长时间。我想这是AJAX的美妙之处,但是我需要按照我为这个特定任务调用它们的顺序进行渲染。

以下是方法:

function GenerateTermSheet()
{
    var urlString = "<%= System.Web.VirtualPathUtility.ToAbsolute("~/mvc/Indications.cfc/RenderPartialTermSheetView")%>";
    var jsonNickname = 
    {
        id : GetGUIDValue(),
        viewName : 'Nickname'
    }
    $.ajax({
        type: "POST",
        url: urlString,
        data: jsonNickname,
        success: function(data) {
            $('#termSheetPrinted').append(data);
        }
    });
    $('#termSheetPopup input[type="checkbox"]:checked').each(function(){
        var checkedName = $(this).attr("name");
        var json = 
        {
            id : GetGUIDValue(),
            viewName : checkedName
        }
        $.ajax({
            type: "POST",
            url: urlString,
            data: json,
            success: function(data) {
                $('#termSheetPrinted').append(data);
            }
        });
    })
    $('#termSheetPopup').dialog('close');
    $('#termSheetPrinted').dialog('open');
}

知道我该怎么做吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我建议将第二个AJAX调用置于必须首先完成的调用的成功函数中调用的函数中。这将导致第二次调用仅在第一次调用成功时执行,并且将实现您正在寻找的目标。