Fonction imbriquée ne s'éxécute pas une deuxième fois

Par Jean Sérien, il y a 2 ans


Bonjour à tous,

Dans le code ci-dessous servant à afficher puis paginer avec deux fetch consécutifs, tout marche bien sauf qu'en rappuyant sur un bouton de pagination à la deuxième fois apparaît du JSON au lieu d'afficher la prochaine page...

Je pense donc qu'il doit y avoir une astuce pour que le deuxième fetch imbriqué s’exécute correctement plusieurs fois...

Que fais-je mal ?

Merci d'avance

export async function filtrerOnglets(url) { try { let response = await fetch(url, { method: "GET", cache: "no-cache", headers: { "X-Requested-With": "XMLHttpRequest", "Content-Type": "Application/json", }, }); let data = await response.json(); tabContent.innerHTML = data.content; let pagination = document.querySelectorAll(".tabs__content span a"); //filtrage pour pagination pagination.forEach((el) => { el.addEventListener("click", (e) => { e.preventDefault(); let urlPagination = e.target.getAttribute("href"); async function paginationAjax() { let response = await fetch(urlPagination, { method: "GET", cache: "no-cache", headers: { "X-Requested-With": "XMLHttpRequest", "Content-Type": "Application/json", }, }); let data = await response.json(); tabContent.innerHTML = data.content; } paginationAjax(); console.log(urlPagination); }); }); } catch (error) { alert("Erreur " + error); } }

2 réponses

Jean Sérien, il y a 2 ans

Bonjour, je reviens sur le sujet car personne n'a répondu encore ...

Alors c'est vraiment bizarre car après tests, la fonction imbriquée renvoie bien le bon data.content à chaque click mais affiche uniquement une page avec du json, sans même le reste du html au second click au lieu de rafraîchir la div "tabsContent".
Ca doit tenir à pas grand chose vu que tout est correct en ce qui concerne le data renvoyé...

BernardNgandu, il y a 2 ans

je te recommande d'utiliser symfony-ux/turbo, ça ne réponds pas à ton problème mais c'est une piste que tu peux explorer