1

我正在使用带有自定义 ajax 代码的添加到购物车并且它工作正常,问题是我需要通过使用 wood.RightDrawer.open(); 打开成功功能的购物车抽屉;现在我在表单中使用“js-drawer-open-right”类,但是当点击添加到购物车按钮时它的抽屉同时打开。我需要在添加到购物车成功时打开抽屉。

我的 Ajax 代码是:

                function addItem(button) {
                var postData = $(button).closest('.add-to-cart').serialize();
                  $.ajax({
                    type: 'POST',
                    url: '/cart/add.js',
                    dataType: 'json',
                    data: postData,
                    success: addToCartOk,
                    error: addToCartFail
                  });
                }
                function addToCartOk(product) {
                //Want to open drawer here on success
                  timber.RightDrawer.open();
                }
                function addToCartFail(obj, status) {
                }

我的表格是:

在这里您可以检查添加到购物车https://soft-theme.myshopify.com/collections/all

4

2 回答 2

1

与 wood.RightDrawer.open(); 相比,我找到了不同且非常简单的解决方案;

我在成功函数中使用 jQuery 单击“js-drawer-open-right”,并从我之前放置的表单中删除了该类。

现在的成功函数是:

         function addToCartOk(product) {
            //drawer open here by click on that class on success
              jQuery('.js-drawer-open-right').click();
            }

它工作得很好。

于 2017-03-26T20:55:18.953 回答
-1

@barjinder 解决方案但更清洁:

$(document).on("click", ".add-to-cart-button", function(event) {
    event.preventDefault();
    var form = $(this).closest('form');
    jQuery.ajax({
        type: 'POST',
        url: '/cart/add.js',
        data: form.serialize(),
        dataType: 'json',
        success: function(cart) {
            jQuery('.js-drawer-open-right').click();
        },
        error: function(XMLHttpRequest, textStatus) {
            alert("An error occurred: can't reach server");
        },
    });
});

您可以使用以下表格

<form action="/cart/add" method="POST">
    <input type="hidden" name="quantity" value="1">
    <input type="hidden" name="id" value="{{ product.variants.first.id }}">
    <button type="submit" class="add-to-cart-button">
        Add to cart
    </button>
</form>
于 2018-05-06T10:54:27.130 回答