Toudum Posted April 12 Share Posted April 12 Bonjour, J'essaie de créer un module back-office qui permet de récupérer les produits qui sont dans la catégorie pack et afficher leur nombre d'articles retirables. Pour ce faire, j'ai une "combobox" avec les packs et j'aimerais que lorsque je sélectionne un pack, le champ correspondant au nombre d'articles retirables se mette à jour et corresponde au pack. Pour cela, j'utilise une requête AJAX. Mon problème est que la requête est bien effectuée à chaque changement de la combobox, mais au lieu d'exécuter le script PHP associé, une redirection est faite avec un code 302 vers un fichier qui n'a rien à voir et je me retrouve avec un code HTML entier dans le champs(que j'ai pu observer dans le DevTools). Comment faire pour empêcher cela ? Ai-je seulement fait une erreur dans ma manière de procéder ? Merci d'avance. Voici comment j'ai procéder : dans un fichier bundleconf/bundleconf.php j'ai le code correspondant à mon module avec dans la fonction renderForm après avoir défini les champs, un appel au script JS : $this->context->controller->addJS($this->_path.'views/js/bundleconf.js'); Voici le contenu du script : document.addEventListener('DOMContentLoaded', function() { var packChoice = document.getElementById('pack_choice'); if (packChoice) { packChoice.addEventListener('change', function() { var productId = this.value; var xhr = new XMLHttpRequest(); xhr.open('GET', 'ajax_script.php?product_id=' + productId, true); xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { document.getElementById('nbr_item').value = xhr.responseText; } else { if (xhr.status === 302) { console.error('Une redirection inattendue s\'est produite.'); }else{ console.error('Erreur lors de la requête AJAX'); } } } }; xhr.open('GET', 'ajax_script.php?product_id=' + productId, true); xhr.send(); }); } }); Voici le contenu du fichier php auquel il fait appel mais qui n'est jamais atteint réellement à cause de la redirection je suppose : <?php if (isset($_GET['product_id'])) { $productId = (int)$_GET['product_id']; $nbrItem = 0; $sql = 'SELECT max_remove_bundle FROM ' . _DB_PREFIX_ . 'product_lang WHERE id_product = ' . $productId; $result = Db::getInstance()->getValue($sql); if ($result !== false) { $nbrItem = (int)$result; } echo $nbrItem; } else { http_response_code(400); echo 'Erreur: ID de produit manquant.'; } ?> Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now