diff --git a/test.html b/test.html index b16ade6..acf4d8c 100644 --- a/test.html +++ b/test.html @@ -82,14 +82,14 @@ const checkedBoxes = document.querySelectorAll('.prod-check:checked'); if(checkedBoxes.length === 0) return alert("Coche des produits !"); - + const btn = document.getElementById('save-btn'); btn.disabled = true; btn.textContent = "Traitement en cours..."; let successCount = 0; let errorCount = 0; - + for (const checkbox of checkedBoxes) { let p = fullProductList[checkbox.dataset.index]; @@ -100,20 +100,27 @@ formData.set('category', newCat); try { + // On ajoute l'en-tête X-Requested-With qui est souvent le verrou du 403 let res = await fetch('api/index.php?action=product_save', { method: 'POST', - body: formData + body: formData, + headers: { + 'X-Requested-With': 'XMLHttpRequest' + } }); + // On récupère le texte pour voir ce que le serveur dit vraiment en cas d'erreur + let resultText = await res.text(); + if (res.ok) { successCount++; } else { - console.error("Erreur serveur sur " + p.name); + console.error("Échec sur " + p.name + " (Code " + res.status + "):", resultText); errorCount++; } - await new Promise(r => setTimeout(r, 250)); + await new Promise(r => setTimeout(r, 300)); } catch (e) { - console.error("Erreur réseau sur " + p.name, e); + console.error("Erreur critique sur " + p.name, e); errorCount++; } } @@ -121,8 +128,7 @@ await loadData(); btn.disabled = false; btn.textContent = "APPLIQUER AUX COCHÉS"; - - alert(`Traitement terminé :\n- Succès : ${successCount}\n- Erreurs : ${errorCount}`); + alert(`Traitement terminé :\n- Succès : ${successCount}\n- Erreurs : ${errorCount}\n\n(Vérifie la console F12 pour le détail des erreurs)`); }