IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] code


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 233
    Points : 107
    Points
    107
    Par défaut [AJAX] code
    Bonjour,

    Mon code et mes requetes AJAX fonctionnaient bien jusqu'a ce que je decide de faire un switch case sur la fonction traitementResultat.
    Je verifie bien que celle ci reçoit un nom de formulaire en type STRING mais ensuite je n'ai rien, même pas un message d'erreur (sauf sous IE6).
    Je ne vois pas ou mon code est faux et j'ai bel et bien l'impression que c'est le onreadystatechange qui m'empeche d'executer correctement le switch case.

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    function traitementResultat(nomFormulaire) {
    	alert(nomFormulaire+" "+typeof(nomFormulaire));
    	if (requete.readyState == 4) 
    	{
    		if (requete.status == 200 || requete.status == 304) 
    		{
    			var data = eval('('+requete.responseText+')');
     
    			switch (nomFormulaire) {
    				case 'presentation' :
    					alert("presentation traitement");
                                            presentation();
    					break;
    				case 'structure' :
    					alert("structure traitement");
    					break;
    				case 'langueVivante' :
    					// appel fonction langueVivante;
    					break;
    				case 'fonctionnement' :
    					// appel fonction fonctionnement
    					break;
    				case 'projetEcole' :
    					// appel fonction projetEcole
    					break;
    				case 'infos' :
    					// appel fonction infos
    					break;					
    			}
    		}
    		else 
    		{
    			alert("Erreur HTTP N°"+requete.status);	
    		}
    	}
    }
     
    function getDonnees() {
    	requete = newRequeteAJAX();
    	// Methode POST asynchrone
    	requete.onreadystatechange = traitementResultat("presentation");
    	requete.open("POST", "query.php", true);
    	requete.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	requete.send("RNE=0620058B");
    }
     
     
    function sendDonnees() {
    	alert("plop");
    }
     
    function presentation() {
    			document.forms["presentation"].elements["typeEcole"].selectedIndex = data.typeEcole;	// 0 Elementaire ; 1 Maternelle ; 2 Primaire
    			document.forms["presentation"].elements["telephone"].value = data.telephone;
    			document.forms["presentation"].elements["siteWeb"].value = data.siteWeb;			
    			document.forms["presentation"].elements["mail"].value = data.mail;
     
    			// RPI
    			switch (parseInt(data.RPI)) {
    				case 0 :	// RPI = OUI
    					document.forms["presentation"].elements["RPI"][1].checked = true;
    					break;
    				case 1 :	// RPI = NON
    					document.forms["presentation"].elements["RPI"][0].checked = true;
    					break;
    			}
     
    			// Education Prioritaire
    			switch (parseInt(data.EP)) {
    				case 0 :
    					alert("Educ. Prio. = "+parseInt(data.EP));		// Debug
    					document.forms["presentation"].elements["EP"][0].checked = true;
    					break;
    				case 1 :
    					alert("Educ. Prio. = "+parseInt(data.EP));		// Debug
    					document.forms["presentation"].elements["EP"][1].checked = true;
    					break;
    				case 2 :
    					alert("Educ. Prio. = "+parseInt(data.EP));		// Debug
    					document.forms["presentation"].elements["EP"][2].checked = true;
    					break;				
    			}
    }

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Il serait préférable d'abord de tester le status et le readyState dans ta fonction getDonnees histoire de ne pas faire d'appels inutiles à une autre fonction.
    Ensuite, pour ton souci, cela vient du fait que ta syntaxe n'envoie pas les paramètres. Essaye plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete.onreadystatechange = function(){traitementResultat("presentation");}

  3. #3
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    switch (nomFormulaire) {
    	case 'presentation' :
    		alert("presentation traitement");
                    presentation();
    		break;
    	case 'structure' :
    		alert("structure traitement"); // pour le test
    		break;
    	case 'langueVivante' :
    		alert('cas langueVivante'); // pour le test
    		// appel fonction langueVivante;
    		break;
    	case 'fonctionnement' :
    		alert('cas fonctionnement'); // pour le test
    		// appel fonction fonctionnement
    		break;
    	case 'projetEcole' :
    		alert('cas projetEcole'); // pour le test
    		// appel fonction projetEcole
    		break;
    	case 'infos' :
    		alert('cas infos'); // pour le test
    		// appel fonction infos
    		break;
    	default: alert('nomFormulaire : '+nomFormulaire);  // pour le test		
    }
    Tu verras si effectivement tu ne passes dans aucun des cas ou si tu passes dans un cas ou tu ne fais aucun traitement.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 233
    Points : 107
    Points
    107
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete.onreadystatechange = function(){traitementResultat("presentation");}
    humm çà me fait penser a un probleme que j'ai eu tres recement ... j'ai encore beaucoup de mal avec le langage objet.

    SInon pour le moment j'ai fait ceci mais ce qui me gene c'est que je vais me retrouver avec une fonction par requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    function getPresentation() {
    	requete = newRequeteAJAX();
    	requete.onreadystatechange = function()
    	{
    		if (requete.readyState == 4)
    		{
    			if (requete.status == 200 || requete.status == 304)
    			{ // Traitement
    				var data = eval('('+requete.responseText+')');
    				document.forms["presentation"].elements["typeEcole"].selectedIndex = data.typeEcole;	// 0 Elementaire ; 1 Maternelle ; 2 Primaire
    				document.forms["presentation"].elements["telephone"].value = data.telephone;
    				document.forms["presentation"].elements["siteWeb"].value = data.siteWeb;			
    				document.forms["presentation"].elements["mail"].value = data.mail;
    				// RPI
    				switch (parseInt(data.RPI)) {
    					case 0 :	// RPI = OUI
    						document.forms["presentation"].elements["RPI"][1].checked = true;
    						break;
    					case 1 :	// RPI = NON
    						document.forms["presentation"].elements["RPI"][0].checked = true;
    						break;
    				}
    				// Education Prioritaire
    				switch (parseInt(data.EP)) {
    					case 0 :
    						document.forms["presentation"].elements["EP"][0].checked = true;
    						break;
    					case 1 :
    						document.forms["presentation"].elements["EP"][1].checked = true;
    						break;
    					case 2 :
    						document.forms["presentation"].elements["EP"][2].checked = true;
    						break;				
    				}
    			}	// Fin Traitement
    			else
    			{
    				alert("HTML erreur N° :"+requete.status);
    			}	// Fin code erreur HTML		
    		}	// Fin readyState == 4		
    	}	// Fin fonction
     
    	// Methode POST asynchrone
    	requete.open("POST", "query.php", true);
    	requete.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	requete.send("mode=lire&rne=0620058B");
    }
    Trouvez vous çà correct ou çà serait mieux de repartir sur ma premiere idée avec le switch ... case ??? Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] code en javascript et php qui fonctionne sous FF et pas sous IE
    Par witch dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/01/2008, 12h13
  2. [AJAX] Code javascript envoyé dans le résultat d'un call XMLHttpRequest.
    Par hickscorp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/01/2008, 19h32
  3. [AJAX] code ajax
    Par trazomtg dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/09/2007, 16h41
  4. [AJAX] Code source d'une page générée dynamiquement
    Par Amnesiak dans le forum Langage
    Réponses: 3
    Dernier message: 20/02/2007, 18h06
  5. [AJAX] Code tuto Ajax fonctionne pas sous FF, mais IE et OP sont OK
    Par hugo69 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 08/01/2007, 21h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo