Cần khởi tạo js sau khi ajax phản hồi magento 2


7

Tôi đang làm việc trên sản phẩm ajaxscroll nhưng khi tôi nhận được phản hồi bên dưới kịch bản không khởi tạo

<script type="text/x-magento-init">
        {
            "[data-role=tocart-form], .form.map.checkout": {
                "catalogAddToCart": {}
            }
        }

</script>

Bất cứ ai có thể giúp tôi để khởi tạo kịch bản sau khi phản hồi.


1
bạn đã sử dụng phần mở rộng ajaxscroll nào?
Rakesh Jesadiya

Tôi đang tạo ra của riêng tôi. Trong trang đầu tiên, sản phẩm ajax addto cart hoạt động nhưng trong phản hồi ajax thì nó không hoạt động
Prashant Valanda

Tôi có cùng một vấn đề, bạn đã giải quyết vấn đề này?
Mike

Có, tôi đã giải quyết vấn đề này bằng cách thêm chức năng yêu cầu addtocart trong trang của mình, đây không phải là cách thích hợp nhưng đó là giải pháp tạm thời cho tôi
Prashant Valanda 21/07/2016

@Dmitry Tôi đã giải quyết vấn đề thử với nó. Đó là làm việc cho tôi.
Prashant Valanda

Câu trả lời:


11

Tôi có cùng một vấn đề và tôi đã giải quyết nó bằng cách gọi catalogAddToCart sau cuộc gọi ajax.

Đây là đoạn mã

$.ajax({
    dataType: 'html',
    type: 'GET',
    url:url,
    success: function(data){
        var data =  $($.parseHTML(data));
        var productList = data.find('.products.list').html(); 
        productWrapper.append(productList);
        // this solved the problem
        $( "form[data-role='tocart-form']" ).catalogAddToCart(); 
    },
});

1
Cảm ơn nó làm việc cho tôi. $ ("biểu mẫu [data-vai trò = 'tocart-form']") .catalogAddToCart ();
Jalpesh Patel

Nó cho tôi lỗi TypeError: $ (...). CatalogAddToCart không phải là một chức năng
Magecode

đảm bảo bạn đang sử dụng catalogAddToCart () sau khi được xác định.
Arun Karnaw

@ArunKarnawat, Thêm mã này vào đâu? Trong tập tin nào? Tôi đang sử dụng cuộn vô hạn,
jafar pinjar

Wow u đã lưu ngày của tôi và cảm ơn mã này $ ("form [data-vai trò = 'tocart-form']") .catalogAddToCart (); Thực sự hữu ích.
gajjala sandeep

6

Tôi đã giải quyết vấn đề này bằng cách sử dụng mã dưới đây:

htmlObject=jQuery("#custom_search_autocomplete").html(result);  

htmlObject.find('[data-role=autocompletesearch-tocart-form], .form.map.checkout').attr('data-mage-init', JSON.stringify({'catalogAddToCart': {}}));             
htmlObject.trigger('contentUpdated');

Tôi cũng đang đối mặt với vấn đề tương tự, bạn đã giải quyết vấn đề này như thế nào? Tôi cần khởi tạo lại thêm chức năng giỏ hàng
jafar pinjar

2

Từ câu trả lời được chấp nhận, tôi đã đưa ra giải pháp chung chung này dễ hiểu hơn một chút:

$(document).ajaxComplete(function() {

    $('[data-mage-init]').each(function() {
        var mageInit = $(this).attr('data-mage-init');

        if (typeof mageInit !== 'undefined') {
            var script = document.createElement("script");
            script.type = "text/x-magento-init";
            script.text = '{"*":' + mageInit.trim() + '}';
            $(this)[0].appendChild(script);
            $(this).trigger('contentUpdated');
            $(this).removeAttr('data-mage-init');
        }
    });

});

Yếu tố là gì? nó không hoạt động. mã của bạn đã hoàn thành chưa?
Magecode

1

Ví dụ dưới đây:

$.ajax({
    dataType: 'html',
    type: 'GET',
    url:url,
    success: function(data){
..............
**$('body').trigger('contentUpdated');**
    },
});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.