SVP AIDEZ-MOI. Mon code AJAX inclus dans une fonction JS setTimeOut ne fonctionne pas du tout

Eléphant du PHP | 63 Messages

02 sept. 2020, 21:58

Bonjour.

Voici mon Code Jquery-Ajax:

Code : Tout sélectionner

$(document).ready(function(){ $("#submit").click(function(){ function sendUssd(data){ if(localStorage.getItem("ussdData")!==undefined && localStorage.getItem("ussdData")!==null){ var ussdData=JSON.parse(localStorage.getItem("ussdData")) loading(1) ussdResultWithoutKeyboard() msg("Sending the ussd"); var url=ussdData.url; var dataString = 'msisdn='+ ussdData.phone + '&message='+ data; // alert(url); // alert(dataString); setTimeout(()=>{ $.ajax({ type: "POST", // url = ussdData.url; url: url, data: dataString, cache: false, success: function(output){ if(output.indexOf("1.")!==-1){ if(output.indexOf("CON")!==-1){ output=output.replace(/CON/g,"") } output=output.replace(/\n/g,"<br />") resultInputsVis(1); setOutput(output) showResult(); }else if(output.indexOf("1.")===-1){ // server doesn't still needs the commands from user output=output.replace(/\n/g,"<br />") resultInputsVis(0); setOutput(output) showResult(); var outEle=selector(".result") var button=document.createElement("button") button.innerHTML="OK"; button.classList.add("endSession"); button.addEventListener("click",()=>{ button.remove(); onlyKeyBoardMode() }) outEle.appendChild(button) }else if(output.indexOf("END")!==-1){ // server doesn't still needs the commands from user output=output.replace(/END/g,"") output=output.replace(/\n/g,"<br />") resultInputsVis(0); setOutput(output) showResult(); var outEle=selector(".result") var button=document.createElement("button") button.innerHTML="OK"; button.classList.add("endSession"); button.addEventListener("click",()=>{ button.remove(); onlyKeyBoardMode() }) outEle.appendChild(button) }else{ output=output.replace(/\n/g,"<br />") resultInputsVis(0); // setOutput("Server is not responding well") setOutput(output) showResult(); var outEle=selector(".result") var button=document.createElement("button") button.innerHTML="OK"; button.classList.add("endSession"); button.addEventListener("click",()=>{ button.remove(); onlyKeyBoardMode() }) outEle.appendChild(button) } loading(0) }, error: function(xhr,status,error) { loading(0) onlyKeyBoardMode() //msg(error) showError(error); } }); },1000) }else{ showError("Enregistrer d'abord vos données"); } } }); });
Dans mon AJAX, inclus dans la méthode JS setTimeOut de la ligne 13 à 85, j'ai appelé dans l'attribut Ajax, success et error, une fonction output qui elle aussi devait appelé certaines autres fonctions que j'ai défini dans mon Script JS dont resultInputsVis(), setOutput(), showResult(), loading(), onlyKeyBoardMode(), showError().

LE PROBLEME, c'est que ce Code AJAX ne fonctionne pas du tout. La seule chose qui fonctionne c'est le loading(1) de la ligne 6 situé juste avant l'appel AJAX contenu dans la fonction setTimeOut qui s'exécute continuellement et sans arrêt. Et quand je décide de commenter ce loading(1) (//loading(1)), je ne vois rien afficher sur la Page. LA PAGE EST DONC 100% VIDE ET BLANCHE. Même quand je fais "Outils Developper (Inspecter) --> Network" dans mon Navigateur Web (Chrome), rien n'est exécuter.

Comment donc corriger mon Code AJAX de sorte à l'Appeler 1 ms après l'exécution du loading(1) de la ligne 6 pour qu'il appelle lui aussi (l'AJAX appelle lui aussi) dans le success, les fonctions définie dans mon Script JS dont resultInputsVis(), setOutput(), showResult(), loading(), onlyKeyBoardMode(), showError().

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8555 Messages

21 sept. 2020, 13:48

Bonjour,

Il faut que tu avances davantage dans ton debugage pour voir à quel niveau ça bloque.
Utilises console.log() pour affiche le cheminement de ton script et la valeur des variables afin de voir à quel niveau exactement cela bloque :
https://developer.mozilla.org/fr/docs/W ... onsole/log

Vérifie aussi dans la console du navigateur que tu n'es pas d'erreur qui bloqueraient l'exécution du reste de ton script.
Quand tout le reste a échoué, lisez le mode d'emploi...