Stone Stone - 5 months ago 29
Ajax Question

Update car in Woocommerce ajax

Hi everyone I have my website with woocommerce I change the car page
remove the button "update car" and create 2 button to add and remove items of product like I show in the picture.

enter image description here

When I click in "add" o "less" button I want to call the same function if I press the button to update the car.

For this I am using ajax but don't execute nothing.

First in my function.php file I have this

function update_my_cart() {
// here update then cart
var_dump("execute");
}
add_action( 'wp_ajax_update_my_cart', 'update_my_cart' ); // If called from admin panel
add_action( 'wp_ajax_nopriv_update_my_cart', 'update_my_cart' );



add_action( 'wp_enqueue_scripts', 'rct_enqueue_scripts' );

if ( ! function_exists( 'rct_enqueue_scripts' ) ) :

function rct_enqueue_scripts() {
wp_enqueue_script( 'rct-js', get_template_directory_uri() . '/js/themeCoffee.js', array(), '1.0', true );
wp_localize_script('rct-js', 'ajax_object', array('ajax_url' => admin_url( 'admin-ajax.php' )));
}

endif;


and in my jquery file I have this

updatecart = function(qty) {
var currentVal, data, item_hash, request;
currentVal = void 0;
data = void 0;
item_hash = void 0;
currentVal = parseFloat(qty);
request = $.ajax({
url: 'ajax_object.ajax_url',
method: 'POST',
data: {
quantity: currentVal,
action: 'update_my_cart'
},
dataType: 'html'
});
request.done(function(msg) {
alert('cart update ');
});
request.fail(function(jqXHR, textStatus) {
alert('Request failed: ' + textStatus);
});
};


I obtain this error

Failed to load resource: the server responded with a status of 404 (Not Found)


because try to load my_website/cart/ajax_object.ajax_url

Thanks in advice!

Answer

You have forget this essential process:

add_action('wp_enqueue_scripts', 'add_my_ajax_scripts'); 
add_my_ajax_scripts(){
    // Here you register your script located in a subfolder `js` of your active theme
    wp_enqueue_script( 'ajax-script', get_template_directory_uri().'/js/script.js', array('jquery'), '1.0', true );
    // Here you are going to make the bridge between php and js
    wp_localize_script( 'ajax-script', 'cart_ajax', array( 'ajaxurl' =>   admin_url( 'admin-ajax.php' ) ) );
}

Then you will retrieve 'ajaxurl' and 'cart_ajax' in your javascript file in url::

$.ajax({
  url: 'cart_ajax.ajaxurl',
  ...
})

Your javascript function will not work. Here are some functional examples of what you need to do:

Comments