Variabile vuota POST ajax
-
Buona sera a tutti.
Sto creando una funzione custom per cambiare le immagini dei prodotti in base all’anno che si sceglie.
nel function php ho inserito la dichiarazione della funzione con questo codice:
function load_scripts_anno(){ global $product; $sku = $product->sku; wp_register_script('anno_prodotto', get_template_directory_uri().'-child/js/anno_prodotto.js', false, false, true ); wp_enqueue_script('anno_prodotto'); wp_localize_script('anno_prodotto', 'my_vars', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'gp-table-comparation-2022' ), 'codice_prodotto' => $sku )); } add_action('wp_enqueue_scripts','load_scripts_anno');
nel file js ho inserito questo:
jQuery(document).ready(function($) { $('#scegli_anno').click(function(e) { $('body').addClass('wait'); e.preventDefault(); var anno = $(this).val(); // carica la variabile della select $.ajax({ // type : "POST", url: my_vars.ajaxurl, // Since WP 2.8 ajaxurl is always defined and points to admin-ajax.php data: { action :'select_image', // il nome della funzione de deve richiamare _nonce : my_vars.nonce, //il codice casuale che viene generato nel setting AJAX in function.php anno : anno, // variabile da trasmettere alla funzione codice : my_vars.codice_prodotto }, // cache: false, success:function(data) { $("#custom_image").html(data); // Restituisce il risultato della richiesta ajax (The Callback) - Viene mostrato nel div settato $('body').removeClass('wait'); }, error: function(errorThrown){ window.alert(errorThrown); } }); }); });
e poi di nuovo nel function.php quest’altro:
//funzione richiamata da ajax function select_image() { if ( !wp_verify_nonce($_REQUEST ['_nonce'], 'gp-table-comparation-2022' )){ die('Autorizzazione non concessa'); } if ( isset($_REQUEST) ) { $anno = $_REQUEST['anno']; $codice = $_REQUEST['codice_prodotto']; immagini($anno, $codice); } // die(); // Always die in functions echoing AJAX content } add_action( 'wp_ajax_select_image', 'select_image' ); //azione eseguibile solo da utenti loggati add_action( 'wp_ajax_nopriv_select_image', 'select_image' ); // azione eseguibile da tutti
che richiama quest’altra funzione
//carica l'immagine del prodotto selezionato function immagini($anno, $codice) { global $product; if (!$codice) { $codice = $product->sku; } if (!$anno){ $anno = '2022'; } $php_file = 'immagini_prodotto.php'; include_once get_template_directory() . '-child/functions/'.$php_file.''; load_image($anno, $codice); }
Funziona tutto correttamente tranne il fatto che lo sku del prodotto non mi viene restituito affatto.
Ho provato anche a caricare direttamente lo sku tramite la variabile globale dalla pagina immagini_prodotto.php ma il risultato non cambia.
Dove sbaglio? potete darmi una mano?
- Il topic ‘Variabile vuota POST ajax’ è chiuso a nuove risposte.