ajax done()函数后重新加载数据

时间:2015-12-08 11:27:24

标签: javascript jquery html css ajax

我尝试重新加载弹出购物车数据 这是一个函数

    if (!BIS.updateTopCartFromCart) {
        BIS.updateTopCartFromCart = {
            init: function() {
                ajax_block('.top-cart');
                ajax_load('.top-cart', '<?=$arResult['AJAX_CALL_ID']?>', $('.top-cart-form').serializeArray());
            }
        }
    }
    if (!BIS.updatePopupTopCart) {
        BIS.updatePopupTopCart = {
            init: function() {
                var container = $('#popup-cart-wrapper');
                var defUpdatedTopCart = new $.Deferred();

                ajax_block('.top-cart');
                var ajaxEnded = ajax_load('.top-cart', '<?=$arResult['AJAX_CALL_ID']?>', $('.top-cart-form').serializeArray());
                $.when(ajaxEnded).done(function() {
                    defUpdatedTopCart.resolve();
                    $.fancybox({
                        content: container,
                        afterLoad: function(){
                            container.html($('.popup')).fadeIn('fast');
                            container.show();
                        }
                    });

                });
                return defUpdatedTopCart;
            }
        }
    }
</script>
 BIS.cartPopup = {
            init: function(container) {
                var cartPopupLink = $('.buttCart');
                var self = this;
}
}

这是cartUpdate函数:

updateCart: function() {
            var container = $('#popup-cart-wrapper');
            ajax_block('#basket-form');
            var ajaxEnded2 = ajax_load('#basket-form', '<?=$arResult['AJAX_CALL_ID']?>', $('#basket-form').serializeArray());
            $.when(ajaxEnded2).done(function(){
                BIS.cartPopup.init('#popup-cart-wrapper');
                BIS.updateTopCartFromCart.init();
                BIS.updatePopupTopCart.init();
            })
        }

ajax返回正确的数据,但我不明白,为什么它不会重新加载弹出数据。 如果我正确理解它必须在done()函数之后执行它,但它没有 我错过了什么 帮助我 最好的reg! 这是ajax_load函数:

function ajax_load (container, ajax_call, params, append) {
    if (!$.isArray(params)) {
        params = $.queryString(params);
    }
    $.post(
        '/bitrix/tools/ajax.php?ajax_call='+ajax_call,
        params,
        function (data) {
            if (container) {
                if (append) {
                    $(container).append(data);
                } else {
                    $(container).html(data);
                }
            }
        }
    );
    //return false;
}

1 个答案:

答案 0 :(得分:1)

为此:

var ajaxEnded = ajax_load('.top-cart',...);

你必须从你的职能部门回复承诺:

function ajax_load (container, ajax_call, params, append) {
    if (!$.isArray(params)) {
        params = $.queryString(params);
    }
    var promise = $.post(
        '/bitrix/tools/ajax.php?ajax_call='+ajax_call,
        params,
        function (data) {
            if (container) {
                if (append) {
                    $(container).append(data);
                } else {
                    $(container).html(data);
                }
            }
        }
    );
    return promise;
}