Utilizar variables de sesión con AJAX sin recargar la página
-
Hola! Estoy intentado pasar un filtro a través de una variable de sesión sin tener que recargar la página de checkout. La idea es que al seleccionar un input radio cargue o no el filtro que aplica un pago extra. He conseguido que cada vez que se recargue la página coja el valor anterior, pero necesito que no haya que recargar y se cargue automáticamente al seleccionarlo, ¿como puedo hacerlo?
add_action( 'wp_footer', 'wpmc_set_session_on_button_click' ); function wpmc_set_session_on_button_click() { session_start(); $array_selectores = $_SESSION['array_selectores']; $json = json_encode($array_selectores); ?> <script> document.querySelectorAll('input[name="horario-liga"]').forEach(function(input) { input.addEventListener("change", function(e) { var jsArray = <?php echo $json; ?>; var horarioLigaValue = document.querySelector('input[name="horario-liga"]:checked').value; var data = { action: 'wpmc_set_session', dto_manana: 'dto' }; var data2 = { action: 'wpmc_set_session', dto_manana: 'no' }; if (jsArray.includes(horarioLigaValue)) { jQuery.post( '<?php echo admin_url('admin-ajax.php'); ?>', data, function(response) { console.log(response); //console.log('dto'); } ); } else { jQuery.post( '<?php echo admin_url('admin-ajax.php'); ?>', data2, function(response) { console.log(response); //console.log('no'); } ); } }); }); </script> <?php } // Manejador de petición AJAX para establecer la variable de sesión add_action( 'wp_ajax_wpmc_set_session', 'wpmc_ajax_set_session' ); add_action( 'wp_ajax_nopriv_wpmc_set_session', 'wpmc_ajax_set_session' ); function wpmc_ajax_set_session() { error_log(print_r($_POST, true)); echo $_POST['dto_manana']; WC()->session->set( 'dto_manana', $_POST['dto_manana'] ); wp_die(); } add_action( 'woocommerce_review_order_before_payment', 'detectar_radio_button_seleccionado' ); function detectar_radio_button_seleccionado() { $dto_manana = WC()->session->get('dto_manana'); if (isset($dto_manana)) { echo $dto_manana; } } add_filter('woocommerce_cart_calculate_fees', 'add_recurring_postage_fees',10,1); function add_recurring_postage_fees( $cart ) { $dto_manana = WC()->session->get('dto_manana'); if ( (! empty( $cart->recurring_cart_key )) && ($dto_manana == 'dto') ) { $cart->add_fee( 'Postage', 5 ); } }
- El debate ‘Utilizar variables de sesión con AJAX sin recargar la página’ está cerrado a nuevas respuestas.