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 :

Portée d'une variable tableau dans une fonction JS


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut Portée d'une variable tableau dans une fonction JS
    Bonjour à tous,

    Soit une petite fonction pour vérifier un formulaire :

    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
     
    function verif(){
    var err = new Array();
     
    if(leChamp.value == ""){
       err.push("le champ est vide");
    }
    if(leChamp2.value....){err.push()} //etc etc sur divers champs...
     
    //puis une fonction jquery pour interroger un script PHP pour une vérif serveur
     
    	$.ajax({
    	   type:"POST",
    	   url:  "xhr_verif.php",
    	   data: "dos="+dos,
    	   success: function(feedback){
    		   err.push(feedback); alert(feedback); 
    		}
    	});
     
    }
    Le problème c'est que la var "err" ne s'implémente pas dans le jquery, alors que le alert(feedback) fonctionne.
    J'ai essayé this.err ou window.err : pas mieux.
    Pourquoi ?
    Merci de vos lumières.

  2. #2
    Invité
    Invité(e)
    Par défaut
    salut,

    Tu entends quoi par "la var err ne s'implémente pas"? (ce qui ne veut rien dire au passage).

    Normalement tu as accès à la variable err "dans le jquery".
    Quant à window et this, c'est normal, que ca marche pas, tu sors du contexte de la fonction verif si tu fais ca.

    err est attaché (mot clé var) à la fonction verif, donc pas besoin de prefixe devant err, puisqu'on est justement dans la fonction verif!

  3. #3
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Bonsoir,

    Ne s'implémente pas...ça veut peut-être rien dire, pour moi ça veut dire que bien que le alert(feedback) retourne bien quelque chose, le tableau err ne prend pas la valeur du feedback.

  4. #4
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Bon, résolu en passant async à false.
    Merci.

  5. #5
    Invité
    Invité(e)
    Par défaut
    je suis quasi sûr que tu essaie de te servir de err après en dehors du callback success.
    Il n'est pas nécessaire de passer l'async à true, tu perds la puissance de l'asynchrone.

    Si feedback existe bien (avec ton alert), alors err est également mis à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	$.ajax({
    	   type:"POST",
    	   url:  "xhr_verif.php",
    	   data: "dos="+dos,
    	   success: function(feedback){
    		   err.push(feedback); alert(err); //affiches les erreurs concaténées
    		}
    	});
    Dans success tu mets à jour certaines variables (ici err). Pour te servir de ces variables mises à jour, il faut faire ton traitement dans success.

  6. #6
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Bonjour,

    Oui, si le tableau err n'est pas vide, je le lis en dehors du callback sucess, mais toujours dans la même fonction "verif":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(err.length > 0){
    	alerte += "Votre formulaire comporte une ou plusieurs erreurs:\n\n";
    	for(var i=0; i<err.length; i++){
    		alerte += err[i];
    	}
    	alert(alerte);
    	return false;
    }
    Et j'ai constaté, avec le async défaut, que les erreurs entrées dans le tableau AVANT le ajax s'affichaient bien, mais pas celles du callback, alors que le alert(feedback), lui, les affiche.

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

Discussions similaires

  1. Copier une variable tableau dans une autre.
    Par Z20500 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/02/2014, 00h05
  2. [PHP 5.0] Problème avec une variable tableau dans une session
    Par diblasio dans le forum Langage
    Réponses: 5
    Dernier message: 23/08/2010, 09h59
  3. Réponses: 9
    Dernier message: 23/06/2009, 10h54
  4. Réponses: 5
    Dernier message: 26/03/2008, 21h48
  5. afficher une variable tableau dans une JSP
    Par johnnywalker dans le forum Struts 1
    Réponses: 11
    Dernier message: 04/03/2007, 22h02

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