【问题标题】:Woocommerce Ajax cart update when state select field is changed状态选择字段更改时 Woocommerce Ajax 购物车更新
【发布时间】:2020-10-04 07:14:56
【问题描述】:

当用户更改运输状态字段选择器时,我正在尝试通过 Ajax 更新购物车,但没有成功。我的代码如下:

add_action( 'wp_footer', 'ava_cart_refresh_update_qty', 9999 ); 
function ava_cart_refresh_update_qty() { 
    if (is_cart()) { 
        ?> 
        <script type="text/javascript">
        (function($) {
            var triggerUpdate = function() {
                $('div.woocommerce').on('click', 'select.state_select', function(){ 
                    console.log('test');
                    $("button[name='calc_shipping']").trigger("click");
                 });
            }

            triggerUpdate();

            $(document).ajaxComplete(function() {
                triggerUpdate();
            });
        })(jQuery);
        </script> 
        <?php 
    } 
}

【问题讨论】:

    标签: php jquery wordpress woocommerce cart


    【解决方案1】:

    这不需要 Ajax。要自动更新更改状态,需要附加到 &lt;body&gt; 的委托事件,例如:

    add_action('wp_footer', 'wc_cart_submit_on_state_change');
    function wc_cart_submit_on_state_change() {
        if ( is_cart() ) :
        ?>
        <script type="text/javascript">
        jQuery( function($){
            var state = '';
    
            // update cart on delivery location checkbox option
            $(document.body).on( 'change', '#calc_shipping_state', function() {
                if( state !== $(this).val() ) {
                    state = $(this).val();
                    $('button[name="calc_shipping"]').submit();
                }
            });
        });
        </script>
        <?php
        endif;
    }
    

    代码在您的活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。

    【讨论】:

    • 使用此代码,即使没有用户交互,页面也会在无限循环中不断刷新。
    • 很高兴检查您的演示,我将使用店面主题进行测试。谢谢!
    • 不幸的是,即使使用 WC Storefront 默认主题也无法正常工作,它会不断刷新购物车页面。可能是由于运输和位置的某些配置?
    • @PLazzo 奇怪,对我来说它可以在 2 个不同的测试服务器上运行……也许你可以尝试用 .submit(); 替换 .trigger('click');
    • 很棒很棒很棒!!!它适用于 .sbumit();非常感谢!!!!!!!
    猜你喜欢
    • 2018-07-29
    • 1970-01-01
    • 2016-10-09
    • 2019-08-07
    • 1970-01-01
    • 2017-01-20
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多