javascript - 等待 Ajax 调用 DOM 操作完成

标签 javascript php jquery html ajax

抱歉这个标题,但我不知道如何调用它。

我得到了一些 ajax 调用函数,成功后会向页面添加一些 HTML 元素:

function ajax_submit_append(form_data, url, result, complete) {
    $.ajax({
        url: url,
        type: 'POST',
        data: form_data,
        success: function(msg) {
              var res = $(msg).filter('span.redirect');
              if($(res).html() != null){
                  window.location.replace($(res).html()); 
                  return false;
              }
            $(result).append(msg);
        },
        complete: complete()
    });
};

函数在成功时执行一些操作,其中最重要的是 .append,然后在某个按钮 .click 函数中调用此 ajax 函数,如下所示:

$(function() {
     $("#product_list_add_btn").click(function(e){
         ajax_submit_append(
                    form_data = {
                        product_name: $('.selectpicker option:selected').val(),
                        amount: $('#amount').val()},
                        "<?php echo site_url('admin_panel/new_order/add_product'); ?>",
                        '#add_product_result',
                        calculateSum
                );
         return false; 
         });
});

我想要实现的是,在通过ajax完成.append之后调用calculateSum函数(对表列求和)。

目前,当我将calculateSum添加到ajax完成事件时,在使用.append将新行添加到表中之前仍然会调用它

编辑:我介绍了 YoucalculateSum,但我相信那里没有任何问题。

function calculateSum() {
    var sum = 0;
    // iterate through each td based on class and add the values
        $(".countit").each(function() {

        var value = $(this).text();
        // add only if the value is number
        if(!isNaN(value) && value.length != 0) {
            sum += parseFloat(value);
        }
    });
    $('#total_price').text(sum);  
    alert("test");
};

如果我必须猜测,我会说它与点击事件有关?

如何解决这个问题?

最佳答案

尝试使用jqXHR的done()方法:

function ajax_submit_append(form_data, url, result, complete) {
    $.ajax({
        url: url,
        type: 'POST',
        data: form_data,
        success: function(msg) {
              var res = $(msg).filter('span.redirect');
              if($(res).html() != null){
                  window.location.replace($(res).html()); 
                  return false;
              }
            $(result).append(msg);
        }
    }).done(complete);
};

关于javascript - 等待 Ajax 调用 DOM 操作完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27887444/

相关文章:

php - OpenSSL 错误 : EVP_DecryptFinal_ex:wrong final block length

php - 如何从 phpMyAdmin 中为我的数据创建搜索字段?

javascript - 在 codeigniter 中使用 ajax 从另一个页面获取值

javascript - 多个条件成立后执行

javascript - 从类型数组中将项目添加到 PouchDB 文档属性

javascript - 从使用 JavaScript 未打开弹出窗口的窗口关闭弹出窗口

javascript - 语法错误 : identifier starts immediately after numeric literal asp. 网络

javascript - Accordion 的滚动相关代码有一些冲突

javascript - jquery,如何只考虑某些<tr>而不是全部来获取行索引

Javascript仅对某些特定的div元素生效