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 :

Variable non transmise


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Par défaut Variable non transmise
    bonjour

    Soit une table <table id="tabGeo>

    Les lignes de cette table ont des <tr id='idmed_xx'> (xx= chiffres ) et un <td> qui contient une adresse.

    (je récupère les xx pour avoir un traitement ultérieur)

    Soit un bouton #geocodeEnMasse dont le click dessus est sensé faire :

    1 - la récupération de xx de chaque <tr> via un usage de " .each() "

    2 - la récupération de l'adresse

    3 - puis faire le geocodage de l'adresse afin d'avoir latitude et longitude ... que je met dans un array[] nommé "donnees"... afin de transmettre ce tableau dans une page php "m_validmodifmedecin.php" ... qui insérera les latitudes et longitudes dans la table via dont l'id vaut le xx.

    je ne pige pas pourquoi mon tableau n'est pas transmis .

    voila le "code" :


    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
    // GEOCODAGE DE MASSE POUR TOUBIB SANS GEOCODAGE PREEXISTANT
    $(document).on('click','#geocodeEnMasse',function(){
        var donnees=[];
        $('#tabGeo tbody tr[id^="idmed_"]').each(function() {
     
            var id_med = $(this).attr('id').substr(6); // recap id du médecin
            var adresse_complete= $(this).find('td.zAdresse').text();// recup adresse
     
            var geocoder = new google.maps.Geocoder();
            geocoder.geocode({'address': adresse_complete,'region':'fr'}, function(results,status) {
                if(status==google.maps.GeocoderStatus.OK)
                {
                      /* Récupération des coordonnées */
                      latitude = results[0].geometry.location.lat();
                      longitude = results[0].geometry.location.lng();
                      donnees.push({
                        'id_med' : id_med,
                        'lat' : latitude,
                        'lng' : longitude
                        });
                }
            });
        });
     
        var fullstr={geocodeEnMasse:1,d:donnees};
        $.ajax({
            url:'m_validmodifmedecin.php',
            data:fullstr,
            success:infoProcess 
        });
        return false;
    });
    j'ai seulement cela qui est transmis quand je fais un print_r($_POST) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <pre>Array
    (
        [geocodeEnMasse] => 1
    )
    </pre>
    Où est passé mon tableau. ?

    un coup de pouce m'aiderai +++

    mouchas gracias

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Bonsoir,
    geocoder.geocode() est asynchrone. Ta fonction de rappel (function(results,status) { ... }) est appelée avec un retard, ce qui fait que la variable donnees ne contient rien au moment où tu la passes à ajax.

    Pour régler le problème, il faut que tu fasses ton appel ajax dans la fonction de rappel de geocode().
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 83
    Par défaut
    Alors là !!!! MERCI ++++ Watilin !! ... tu mérites bien ton grade "EXPERT confirmé"

    tu as trouvé le hic que je ne soupçonnait pas !

    pour info ...voilà mon code qui marche ... possiblement optimisable ...mais a mon niveau c'est fonctionnel

    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
    // GEOCODAGE DE MASSE POUR PRATICIEN SANS GEOCODAGE
    $(document).on('click','#geocodeEnMasse',function(){
    		var tabdata = []; 
    		var tr=$('#tabGeo tbody tr[id^="idmed_"]'); 
    		var nb=tr.length; 	// nb lignes a geocoder
    		tr.each(function(i) { 
     
                var id_med = $(this).attr('id').substr(6);
                var adresse_complete= $(this).find('td.zAdresse').text();
    			var geocoder = new google.maps.Geocoder();
    			geocoder.geocode({'address': adresse_complete,'region':'fr'},function(results,status)
    			{
    				if(status==google.maps.GeocoderStatus.OK)
    				{
    					/* RÉCUPÉRATION DES COORDONNÉES - A CHAQUE BOUCLE JE COMPLETE LA TABLEAU TABDATA*/
    					latitude = results[0].geometry.location.lat();
    					longitude = results[0].geometry.location.lng();
    					tabdata.push({'id_med' : id_med,'lat' : latitude,'lng' : longitude});	
    				}
    				// SI ON EST AU BOUT DE LA BOUCLE ... ON TRAITE ENFIN LES DONNÉES.
    				if(nb==(i+1))
    				{
    					var fullstr={geocodeEnMasse:'1',d:tabdata};
    					$.ajax({
    						url:'m_validmodifmedecin.php',
    						data:fullstr,
    						success:infoProcess,
    						complete:function(){ $('#getGeocode').trigger('click'); }
    					});						
    				}
    			});		// fin geocoder.geocode
    		});			// fin de .each()
    		return false;
    });

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

Discussions similaires

  1. Variable non transmise (post) sur serveur distant
    Par mikl86 dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2011, 12h27
  2. [Flex3] Variables non transmises depuis l'event scroll
    Par alain31tl dans le forum Flex
    Réponses: 14
    Dernier message: 10/10/2010, 21h13
  3. [SQL-Server] mssql/php update et variables non transmises
    Par evra76 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 26/06/2009, 11h03
  4. [POO] Une valeur de variable non transmise.
    Par claritos1 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/05/2008, 11h45

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