Mon code ne s'execute pas
metronome237
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
Pitet Messages postés 2826 Date d'inscription Statut Membre Dernière intervention -
Pitet Messages postés 2826 Date d'inscription Statut Membre Dernière intervention -
<script> var element = document.getElementById("numero"); var buttonafficher = document.getElementById("submit"); var numero = element.value; buttonafficher.addEventListener('click',function(){ //alert(numero); if(numero == ""){ alert("veuillez remplir ce champ"); event.preventDefault(); } if(numero == "jfet025"){ document.getElementById("numero").value="jfet025"; document.getElementById("text").value="20/08/21"; document.getElementById("text1").value="jfet compagny"; document.getElementById("montant").value="2.000.000"; document.getElementById("etat").value="livrer"; event.preventDefault(); return; } //--------lire les infos via le fichier consulterfact.php et affiche var xhr= new XMLHttpRequest(); var numfactsaisie = document.getElementById("numero").value; xhr.open("GET","/prospectvente/facture/consulterfact.php?numero="+numfactsaisie, true); xhr.responseType="json"; xhr.send(); xhr.onreadystatechange=function(){ if(xhr.readystate == 4 && xhr.status == 200){ var res =json.parse(xhr.response); console.log(this.response); alert(res.dvteNum); document.getElementById("numero").value=res.dvteNum; document.getElementById("text").value=res.dvteDtEnreg; document.getElementById("text1").value=res.dvteNomClient; document.getElementById("montant").value=res.dvtemtTTC; }else{ //alert(xhr.status); } } event.preventDefault(); }); </script>
bonjour voici mon code javaScript les données saisies en dur s'affiche sur le navigateur mais lorsque je saisie une valeur dans le champ requis la suiyte du code ne s'exécute pas pour lire les informations de consulterfact.php svp j'ai besoin d'aide merci
A voir également:
- Mon code ne s'execute pas
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
10 réponses
Bonjour,
Commence par regarder dans la console javascript de ton navigateur, tu dois avoir des erreurs à corriger.
Il manque notamment le paramètre event dans la fonction passée via addEventListener pour appeler preventDefault(). Généralement on utilise preventDefault() dès le début de la fonction pour annuler le comportement de base du bouton, ainsi pas besoin de rappeler cette instruction plusieurs fois :
A voir dans la console js si il y a d'autres erreurs à corriger.
Commence par regarder dans la console javascript de ton navigateur, tu dois avoir des erreurs à corriger.
Il manque notamment le paramètre event dans la fonction passée via addEventListener pour appeler preventDefault(). Généralement on utilise preventDefault() dès le début de la fonction pour annuler le comportement de base du bouton, ainsi pas besoin de rappeler cette instruction plusieurs fois :
buttonafficher.addEventListener('click', function(event) { event.preventDefault(); // on annule la gestion de base de l'event, pas besoin de réutiliser cette instruction dans la fonction // ... suite du code ...
A voir dans la console js si il y a d'autres erreurs à corriger.
Dans ce cas le problème peut venir de la requête ajax. Est-ce que tu as une erreur (500, 404, ...) dans l'onglet Réseau dans les outils de développement du navigateur lorsque le requête ajax est envoyée ?
Si tu décommente la ligne
Si tu décommente la ligne
//alert(xhr.status);, est-ce que tu as un retour ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
D'après ton code, si la valeur de l'input "numero" est égale à "jfet025", les autres input sont alors remplis (ligne 15 à 20 de ton premier code) mais la requête ajax n'est pas envoyée puisque ton code s'arrête à l'instruction
Si tu as un retour 200 c'est que la requête ajax est bien passée, tu devrais donc voir ton résultat via l'instruction
return;à la ligne 21. Est-ce bien le comportement attendu ?
Si tu as un retour 200 c'est que la requête ajax est bien passée, tu devrais donc voir ton résultat via l'instruction
alert(res.dvteNum);?
oui lorsque je saisi jfet025 il renvoi les données replies en dur ça c'et la première partie
mais je voudrai que lorsque j'entre une autre valeur dans l'input "numero" il part lire dans la base de donnée et me renvoyer le resulta mais il ne le fais pas
mais je voudrai que lorsque j'entre une autre valeur dans l'input "numero" il part lire dans la base de donnée et me renvoyer le resulta mais il ne le fais pas
En testant un peu plus ton code, je viens de comprendre que le problème vient d'une erreur de syntaxe : la propriété
Ton code devrait mieux fonctionne avec cette correction.
xhr.readystaten'existe pas, il s'agit de
xhr.readyState(avec un S majuscule).
Ton code devrait mieux fonctionne avec cette correction.
je n'ai toujours aucun changement
Pas très précis comme retour. Le code de la fonction onreadystatechange est bien exécuté ? Des erreurs dans la console js ?
Un exemple : https://jsfiddle.net/c7z8xdhe/
N'ayant pas accès au fichier consulterfact.php, j'ai utilisé une autre API json en ligne pour faire un test.
Un exemple : https://jsfiddle.net/c7z8xdhe/
N'ayant pas accès au fichier consulterfact.php, j'ai utilisé une autre API json en ligne pour faire un test.
le navigateur exécute la première partie du code mais il ne parvient pas à exécuter a suite du code pour lire les informations via le fichier consulterfactt là
bonjour désolé pour l'absence mais rien ne s'affiche toujours mais j'ai une erreur dans la conole voici l'erreur:
Uncaught ReferenceError: res is not defined
at XMLHttpRequest.xhr.onreadystatechange ((index):99)
(index):70 Numéro : 11BL1
(index):92 Send XHR
(index):95 State : 2 Status : 200
(index):95 State : 3 Status : 200
(index):95 State : 4 Status : 200
(index):98 null
Uncaught ReferenceError: res is not defined
at XMLHttpRequest.xhr.onreadystatechange ((index):99)
voilà les 2 erreurs
Uncaught ReferenceError: res is not defined
at XMLHttpRequest.xhr.onreadystatechange ((index):99)
(index):70 Numéro : 11BL1
(index):92 Send XHR
(index):95 State : 2 Status : 200
(index):95 State : 3 Status : 200
(index):95 State : 4 Status : 200
(index):98 null
Uncaught ReferenceError: res is not defined
at XMLHttpRequest.xhr.onreadystatechange ((index):99)
voilà les 2 erreurs
Bonjour,
Bonne nouvelle si tu as des messages d'erreurs, même si ca ne fonctionne pas encore on devrait désormais savoir pourquoi.
D'après le message d'erreur, à la ligne 99, tu essayes d'utiliser la variable res alors que celle-ci n'a pas été déclarée (elle n'est pas initialisée).
Si tu ne vois pas comment corriger l'erreur, peux-tu nous montrer la dernière version de ton code complet stp ?
Bonne nouvelle si tu as des messages d'erreurs, même si ca ne fonctionne pas encore on devrait désormais savoir pourquoi.
D'après le message d'erreur, à la ligne 99, tu essayes d'utiliser la variable res alors que celle-ci n'a pas été déclarée (elle n'est pas initialisée).
Si tu ne vois pas comment corriger l'erreur, peux-tu nous montrer la dernière version de ton code complet stp ?
var element = document.getElementById("numero"); var buttonafficher = document.getElementById("submit"); alert(numero); buttonafficher.addEventListener('click', function(event){ event.preventDefault(); var numfactsaisie = document.getElementById("numero").value; console.log('Numéro : ' + numfactsaisie); if(numfactsaisie == ""){ alert("veuillez remplir ce champ"); return; } if(numfactsaisie == "jfet025"){ document.getElementById("numero").value="jfet025"; document.getElementById("text").value="20/08/21"; document.getElementById("text1").value="jfet compagny"; document.getElementById("montant").value="2.000.000"; document.getElementById("etat").value="livrer"; return; } //--------lire les infos via le fichier consulterfact.php et affiche var xhr= new XMLHttpRequest(); xhr.open("GET","/prospectvente/facture/consulterfact.php?numero="+numfactsaisie, true); xhr.responseType = "json"; xhr.send(); console.log('Send XHR'); xhr.onreadystatechange = function(){ console.log('State: '+xhr.readyState+ ' Status : '+xhr.status); if(xhr.readyState == 4 && xhr.status == 200){ console.log(xhr.response); alert(res.dvteNum); document.getElementById("numero").value=res.dvteNum; document.getElementById("text").value=res.dvteDtEnreg; document.getElementById("text1").value=res.dvteNomClient; document.getElementById("montant").value=res.dvtemtTTC; }else{ } }; });
voici la dernière version
En effet suite aux différentes version de test, la variable res n'est plus initialisée sur la dernière version.
Tu peux essayer avec cette correction :
J'ai ajouté la ligne
Tu peux contrôler si les données récupérées sont correctes dans la console juste après le message "Response :".
Si cette récupération ne fonctionne pas correctement, tu peux essayer de remplacer cette ligne par celle en commentaire juste dessous qui utilise JSON.parse() mais comme indiqué dans un précédent message, tu ne devrais en théorie pas avoir besoin d'utiliser JSON.parse() car le responseType est déjà défini en json.
Tu peux essayer avec cette correction :
var element = document.getElementById("numero"); var buttonafficher = document.getElementById("submit"); buttonafficher.addEventListener('click', function(event){ event.preventDefault(); var numfactsaisie = document.getElementById("numero").value; console.log('Numéro : ' + numfactsaisie); if(numfactsaisie == ""){ alert("veuillez remplir ce champ"); return; } if(numfactsaisie == "jfet025"){ document.getElementById("numero").value="jfet025"; document.getElementById("text").value="20/08/21"; document.getElementById("text1").value="jfet compagny"; document.getElementById("montant").value="2.000.000"; document.getElementById("etat").value="livrer"; return; } //--------lire les infos via le fichier consulterfact.php et affiche var xhr= new XMLHttpRequest(); xhr.open("GET","/prospectvente/facture/consulterfact.php?numero="+numfactsaisie, true); xhr.responseType = "json"; xhr.send(); console.log('Send XHR'); xhr.onreadystatechange = function(){ console.log('State: ' + xhr.readyState + ' Status : ' + xhr.status); if(xhr.readyState == 4 && xhr.status == 200){ var res = xhr.response; // var res = JSON.parse(xhr.response); console.log('Response : '); console.log(res); document.getElementById("numero").value = res.dvteNum; document.getElementById("text").value = res.dvteDtEnreg; document.getElementById("text1").value = res.dvteNomClient; document.getElementById("montant").value = res.dvtemtTTC; } }; });
J'ai ajouté la ligne
var res = xhr.response;pour récupérer le réponse de la requête ajax dans la variable res.
Tu peux contrôler si les données récupérées sont correctes dans la console juste après le message "Response :".
Si cette récupération ne fonctionne pas correctement, tu peux essayer de remplacer cette ligne par celle en commentaire juste dessous qui utilise JSON.parse() mais comme indiqué dans un précédent message, tu ne devrais en théorie pas avoir besoin d'utiliser JSON.parse() car le responseType est déjà défini en json.
A priori la requête est envoyée puisqu'on arrive à la ligne console.log('Send XHR'); mais la fonction onreadystatechange n'est pas appelée car on ne voit plus les logs "State" et "Status" comme ton précédent test.
Pas d'autres messages dans la console ?
Est-ce que tu vois la requête ajax dans l'onglet Réseau à coté de l'onglet Console ?
Le serveur php est bien démarré (la page consulterfact.php fonctionne) ?
Pas d'autres messages dans la console ?
Est-ce que tu vois la requête ajax dans l'onglet Réseau à coté de l'onglet Console ?
Le serveur php est bien démarré (la page consulterfact.php fonctionne) ?