Mon code ne s'execute pas
metronome237
Messages postés
39
Statut
Membre
-
Pitet Messages postés 2845 Statut Membre -
Pitet Messages postés 2845 Statut Membre -
<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
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 :
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. -
bonjour
ma console n'a pas d'erreur mais je ne comprend pas ce qui se passe -
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//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
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'instructionalert(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 -
En testant un peu plus ton code, je viens de comprendre que le problème vient d'une erreur de syntaxe : la propriété
xhr.readystate
n'existe pas, il s'agit dexhr.readyState
(avec un S majuscule).
Ton code devrait mieux fonctionne avec cette correction. -
-
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.
-
-
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-
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 ?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 :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 lignevar 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) ?
-