簡體   English   中英

等待稱為DOM操作的Ajax完成

[英]Waiting for Ajax called DOM manipulation to finish

對不起,標題,但我不知道該如何稱呼。

我得到了一些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 complete事件時,在使用.append將新行添加到表中之前仍會調用它

編輯:我現在是您calculateSum,但我相信那里沒有錯誤。

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);
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM