Mon code ne s'execute pas

Fermé
metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021 - 7 sept. 2021 à 10:31
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 10 sept. 2021 à 18:21
<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:

10 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
7 sept. 2021 à 11:05
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.
0
metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021
7 sept. 2021 à 11:15
bonjour
ma console n'a pas d'erreur mais je ne comprend pas ce qui se passe
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié le 7 sept. 2021 à 12:09
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 ?
0
metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021
7 sept. 2021 à 12:04
non non tout passe il m'affiche 200 ok
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié le 7 sept. 2021 à 12:11
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'instruction
alert(res.dvteNum);
?
0
metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021
7 sept. 2021 à 12:20
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
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
7 sept. 2021 à 12:26
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 de
xhr.readyState
(avec un S majuscule).

Ton code devrait mieux fonctionne avec cette correction.
0
metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021
7 sept. 2021 à 12:33
je n'ai toujours aucun changement
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié le 7 sept. 2021 à 12:45
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.
0
metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021 > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
7 sept. 2021 à 13:04
il n'arrive mème pas jusque là bas c'est mon véritable problème il n'exécute pas cette partie
0
metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021
7 sept. 2021 à 12:46
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à
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
7 sept. 2021 à 13:02
Est-ce que la condition
if(xhr.readyState == 4 && xhr.status == 200)
est vrai lorsque tu exécute le code ?
Est-ce que tu vois la réponse de la requête dans la console ?
Toujours pas d'erreurs dans la console js ?
0
metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021 > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
7 sept. 2021 à 13:09
cette condition est vrai puisqu'il me renvoi 200 ok
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524 > metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021
7 sept. 2021 à 13:11
Donc si tu affiches la réponse juste après tu devrais la voir dans la console ? Est-ce le cas ?
if(xhr.readyState == 4 && xhr.status == 200){
  console.log(xhr.response);
0
metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021 > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
7 sept. 2021 à 13:17
XHRGEThttp://localhost/prospectvente/facture/consulterfact.php?numero=11BL1
[HTTP/1.1 200 OK 32ms]

voilà ce qui s'affiche dans la console lorsque je saisi quelque chose dans l'inpur "numero"
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524 > metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021
7 sept. 2021 à 13:22
Il ne s'agit pas de la réponse, as tu bien utilisé l'instruction
console.log(xhr.response);
?

Est-ce que tu peux nous montrer ton code modifié sinon ?
0
metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021
10 sept. 2021 à 10:08
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
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
10 sept. 2021 à 12:58
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 ?
0
metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021 > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
10 sept. 2021 à 13:10
	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
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524 > metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021
10 sept. 2021 à 17:41
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 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.
0
metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021 > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
10 sept. 2021 à 18:00
(index):74 Numéro:11BAC
(index):97 Send XHR
Voilà ce que ça me renvoi comme erreur dans la console
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524 > metronome237 Messages postés 34 Date d'inscription mercredi 11 août 2021 Statut Membre Dernière intervention 10 septembre 2021
Modifié le 10 sept. 2021 à 18:21
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) ?
0