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

jQuery Discussion :

Récupérer une variable avec la fonction $.ajax


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut Récupérer une variable avec la fonction $.ajax
    bonjour,
    je fais une requete ajax qui me genere un flux XML,je recupere une donnée de ce flux dans la fonction success,mais je n arrive pas a élargir la porté de cette variable.

    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
     
     
    $.ajax({
    			type:"GET",
    			url: "/ajax/checkForm.do",
    			data: "type="+type+"&valeur="+donne,
    			dataType:"xml",
     
    	        success: function(dat)
    	         {             erreur="";
    				$(dat).find("description").each(function(){
    					erreur += $(this).text();
    		        	})	;
     
    		    },
    	       error: function(){
    	        	 {alert('fonction ajax failed');}
    	    	} 
     });

    J aimerais récuperer la variable erreur en dehors de cette fonction,j ai essayé un plusieur solution dont les variable globale,pas réussit,si qq un a une idée merci.

  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 : 53
    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
    j ai essayé un plusieur solution dont les variable globale,pas réussit
    Etonnant, mais pour répondre, il faudrait en savoir un peu plus car il n'y a aucune raison pour qu'une variable globale ne fonctionne pas...

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut suite
    j ai déclarer par exemple ma variable erreur au début de la page js qui contient quelques fonctions.
    puis à l appel de la fonction ajax,elle est censé prendre une valeur,mais lorsque je fais un alert à la fin,lorsqu on sort de la fonction ajax,il n y a rien.par contre dans la fonction ajax,erreur prend bien une valeur non vide

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    tu peux poster le code avec tes alerts stp

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    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
     
    var erreur="";
    function formulaire_ajax(type,donne){
     
      $.ajax({
    			type:"GET",
    			url: "/ajax/checkForm.do",
    			data: "type="+type+"&valeur="+donne,
    			dataType:"xml",
     
    	   success: function(dat)
    	         {
    				$(dat).find("description").each(function(){
     
    					erreur += $(this).text();
    					alert("success="+erreur); 
                                            // on a bien une chaine non vide
     
    				})	;
     
    		    },
    	       error: function(){
    	        	 {alert('fonction ajax failed');}
    	    	} 
     });
     
     
     return erreur;
    }	
     
     
    function chek_field(){
     
    	$("input[class^=smartfield]").change(function(){
     
     
    			s = this.getAttribute("class");
    			s = s.substr(11);
     
    		//	res = concatener_fields(s);
                            alert(erreur);   //on a rien du tout
    			erreur = formulaire_ajax(s,this.value);	
     
    			})
    )}

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    il est normal qu on ai rien du tout dans l alert juste au dessus de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     erreur = formulaire_ajax();
    j ai rajouter un alerte apres mais on a rien non plus

  7. #7
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    c'est tout a fait normal. car $.ajax lance la requête puis rends la main,
    ainsi ton code d'alert s'exécute avant la fonction success (celle-ci étant
    appelée au retour de la requête quelques milisecondes plus tard)

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    oui je vien de remarquer ca,comment regler ce probleme?

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    j aimerais bloquer le script js tant que la requete ajax n est pas complete.

  10. #10
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    ce n'est pas une très bonne idée de bloquer le script, car tu bloque
    toute ton interface pendant la requête. Le mieux c'est d'appeler
    une fonction depuis success

    Si tu explique plus en détail ce que tu cherches à faire je peux t'expliquer
    comment.

  11. #11
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    je veux creer dynamiquement une div dans lequel il y aura un message d erreur ou pas apres une verification serveur.le serveur renvoie un flux xml avec un message d erreur.Le probleme c est que je n ai pas d idée comment coder dans la fonction success la creation dynamique de la div.Voici le code dans le fichier js qui tourne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    if (erreur != ""){
    							e = document.createElement("div");
    							e.setAttribute("style","float:left;width:300px;height:10px;color:red;");
    							e.setAttribute("id","erreur_"+type);
    							e.innerHTML=erreur;		
    							if(this.nextSibling) {
    								return this.parentNode.insertBefore(e, this.nextSibling);
    						    }
    							else {return this.parentNode.appendChild(e);}
    						};

    ,mais si je l inclu dans la fonction success,il faut reparamétré et jen y arrive pas

  12. #12
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    en gros j aimerais remplacer this par $(".smartfield_"+type) c est un element input de classe : "smartfield_"+type ,mais apparement this est un objet html et $(".smartfield_"+type) un objet xml,ensuite les methodes parentNode,nextSibling... doivent etre adapté en jquery,mais je maitrise mal le sujet

  13. #13
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    en gros tu pourrais écrire quelque chose dans ce genre,
    j'ai un peu modifier ton code pour exploiter jQuery, mais
    j'ai pas testé.

    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
     
    function formulaire_ajax(type, donne, showError){
      $.ajax({
    	type:"GET",
    	url: "/ajax/checkForm.do",
    	data: "type="+type+"&valeur="+donne,
    	dataType:"xml",
     
    	success: function(dat) {
                var erreur = '';
    	    $(dat).find("description").each(function(){
    		erreur += $(this).text();
    	    });
                if(erreur.length) showError(erreur);
    	},
    	error: function(){
                alert('fonction ajax failed');
    	} 
      });
    }	
     
    function chek_field() {
      $("input[class^=smartfield]").change(function(){
          s = this.getAttribute("class");
          s = s.substr(11);
          var me = $(this);
          formulaire_ajax(s, this.value, function(erreur) {
              me.after($('<div></div>')
                 .css({ float: 'left', width: '300px', height: '10px', color: 'red' })
    	     .attr('id', "erreur_"+type)
                 .html(erreur);
              );
          });
      })
    }

  14. #14
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    bon j ai mis mon test dans la fonction success
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(erreur = "")
    {$(".smartfield_"+type).after($('<div></div>').	css({ float: 'left', width: '300px', height: '10px', color: 'red'}).	attr('id',erreur_"+type).html(erreur));

    ca fonctionne,

  15. #15
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    j ai oublié de te remercié



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

Discussions similaires

  1. Recuperer une variable avec la fonction $.ajax
    Par CraPu!e dans le forum jQuery
    Réponses: 2
    Dernier message: 25/05/2010, 12h45
  2. récupérer une variable avec $_POST
    Par Giantrick dans le forum Langage
    Réponses: 3
    Dernier message: 11/05/2009, 00h03
  3. Réponses: 2
    Dernier message: 01/12/2008, 14h18
  4. [Système] Récupérer une variable avec Curl
    Par Alexdezark dans le forum Langage
    Réponses: 2
    Dernier message: 26/11/2007, 15h33
  5. Réponses: 21
    Dernier message: 30/03/2007, 15h21

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