javascript - 在另一个 ajax 函数结束后执行操作

标签 javascript jquery ajax jquery-deferred

我正在寻找解决方案: 我有一个函数可以更新应用程序中表格的内容。

function prev_update(cli_id){
    $("#list").empty();
    $("#list").append("<tr><td colspan=11><img src='images/loading.gif' alt=loading title=loading /></td></tr>");
    $.ajax({
        type        : 'POST',
        url         : 'json/get.php?t=2&id='+cli_id, 
        dataType    : 'json',
        encode      : true
    })
    .done(function(data) {
        $("#list").empty();
        if ((data)["prev_list"]) {  
            $.each((data)["prev_list"], function( i, val ) {
                $( "#list" ).append(val);
            });
            $("#edit").hide("slow");
        } else {
            $("#list").append("<tr><td colspan=11>&nbsp;</td></tr>");                       
        }
    });
};

在另一个函数中,我正在更新表的一行,当我完成编辑表的一行的内容时,我启动一个类似的函数,但在 .done 行中,我调用 prev_update 函数,并在完成后我必须在更新的表格内容中按下按钮,以查看修改... 代码如下:

$("#prev_mod").on("click",(function( event ) {
     $('#loading_img').css('display','inline');
     header_print();
     $.ajax({
         type       : 'POST',
         url        : 'json/post.php?mod='+$('#prev_id').val(),
         data       : $("#form_sog").serialize(),
         dataType   : 'json',
         encode : true
   })
   .done(function(data) {
        if ((data)["success"]===false) {    
            $('#form_edit').hide('slow');
            prev_update();
            $('#edit_'+$('#prev_id').val()).click();
        });
   });
}));

我必须等待 prev_update() 函数结束,然后单击按钮,因为该按钮位于正在更新的表中。 我也尝试使用延迟对象,但它不起作用(也许是因为我的错误)。 我无法编辑函数 prev_update,因为它已被其他函数使用。

最佳答案

您可以使用 .then 代替 .done 来组织代码。这是因为 .then 可以链接

未经测试,但可能是这样的

function prev_update(cli_id){
    $("#list").empty();
    $("#list").append("<tr><td colspan=11><img src='images/loading.gif' alt=loading title=loading /></td></tr>");
    $.ajax({
        type        : 'POST',
        url         : 'json/get.php?t=2&id='+cli_id, 
        dataType    : 'json',
        encode      : true
    })
    .then(function(data) {
        $("#list").empty();
        // rest of code
    }).then(function(data) {
        if ((data)["success"]===false) {    
            // rest of code
        };
   });

关于javascript - 在另一个 ajax 函数结束后执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40882184/

相关文章:

javascript - 在 jQuery UI MultiSelect Widget 中选择复选框

php - 3 Drop Downs 链使用 ajax mysql

javascript - 将 php 数组从外部 php 文件传递​​给 javascript 函数

javascript - 在字符串中使用一个新行

javascript - 使用 Javascript 将行添加到 HTML 表并保存在本地驱动器上

javascript - 从ajax获取行并附加到现有的最后一行

java - ajax GET请求Spring的403禁止错误

javascript - 将字符串转换为 JSON 对象数组 (Node.js)

jquery - 在 <area> 上显示工具提示/弹出窗口

javascript - 使用 jQuery 检测 JSON 数组中有多少元素发生了变化