• I wrote what is a relatively simple plugin that allows users on my woocommerce store to add a free sample to their basket, it’s been working great until wordpress auto updated to 6.5, now when the users clicks to add a sample to the basket they get this error,

    Cannot read properties of undefined (reading ‘0’)

    with this stacktrace,

    Uncaught TypeError: Cannot read properties of undefined (reading '0')
        at document.body.onadded_to_cart (main.js?ver=c4a77335eae7e6132482:1:3147)
        at Object.trigger (jquery.min.js?ver=3.7.1:2:70175)
        at HTMLBodyElement.<anonymous> (jquery.min.js?ver=3.7.1:2:70726)
        at Function.each (jquery.min.js?ver=3.7.1:2:3129)
        at e.<computed>.each (jquery.min.js?ver=3.7.1:2:1594)
        at e.<computed>.trigger (jquery.min.js?ver=3.7.1:2:70701)
        at HTMLButtonElement.<anonymous> (gifts-at-checkout.js?ver=6.5:112:26)
        at HTMLLIElement.dispatch (jquery.min.js?ver=3.7.1:2:40035)
        at v.handle (jquery.min.js?ver=3.7.1:2:38006)
    

    The gifts-at-checkout.js is the javascript my plugin loads in and the line is this,

    $(document.body).trigger('added_to_cart', [$thisbutton, data]);
    

    which is one line of this click event.

    $( 'li' ).on( 'click', '.single_add_to_cart_button', function(e) {
            e.preventDefault();
            var $thisbutton = $(this),
                $form = $thisbutton.closest('form.cart'),
                id = $thisbutton.val(),
                product_qty = $form.find('input[name=quantity]').val() || 1,
                product_id = id,
                variation_id = $form.find('input[name=variation_id]').val() || 0;
    
            var data = {
                action: 'woocommerce_ajax_add_to_cart',
                product_id: product_id,
                product_sku: '',
                quantity: product_qty,
                variation_id: variation_id,
            };
    
            $(document.body).trigger('added_to_cart', [$thisbutton, data]);
    
            $.ajax({
                type: 'post',
                url: wc_add_to_cart_params.ajax_url,
                data: data,
                beforeSend: function (response) {
                    $thisbutton.removeClass('added').addClass('loading');
                },
                complete: function (response) {
                    $thisbutton.addClass('added').removeClass('loading');
                    $thisbutton.parent().addClass("in-cart");
                },
                success: function (response) {
    
                    if (response.error && response.product_url) {
                        window.location = response.product_url;
                        return;
                    } else {
                        $(document.body).trigger('update_checkout', [response.fragments, response.cart_hash, $thisbutton]);
                        selectedSamples.push(product_id);
                        if(selectedSamples.length == parseInt(scriptParams.samples_threshold)) {
                            $('li .single_add_to_cart_button').addClass('isDisabled');
                        }
                    }
                },
            });
    
            return false;
        });
    

    I assume that something in wordpress core in woocommerce core has changed but I cannot for the life of me figure out what, can anyone shed any light on this for me?

    Many thanks

Viewing 2 replies - 1 through 2 (of 2 total)
Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘WordPress 6.3 to 6.4 now getting JS error in my plugin’ is closed to new replies.