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 :

Transmission variable javascript


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut Transmission variable javascript
    Bonjour
    je reposte un message au sujet du probleme que je rencontre pour passer d'une page avec une variable javascript à une page avec une variable php contenant la valeur de la variable javascript.
    J'ai testé plusieurs choses et j'ai maintenant plus d'éléments pour identifier le probleme

    sur la premiere page (index.php) , on fournit une adresse (exemple : 75010, france). la fonction showadress calcule les coordonnées (latitude, longitude) et renvoie la valeur, qu'on transmet sur la page suivante (afficher.php) dans une variable php qu'on affiche

    code de index.php :

    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
    <head>
    <title>Application Google Map</title>
    <script src="http://maps.google.com/maps?file=api&v=2.x&key=ABQIAAAAal_cd43vOKPQhNkPDkwHgBQSXE4ITa1YzwIbIoQt-CisjCLm8xTJhtTXHvXoMcij_eu3bNbEGnk_PA" type="text/javascript"></script>
    <style type="text/css">
     
    </style>
    </head>
    <body style="margin: 0px; padding: 0px;">
     
    <form action="afficher.php" method="post" onsubmit="document.getElementById('latLngStr').value=showAddress(address_rech.value);">
    <input type="text" id="address_rech" name="address_rech" value="" >
    <input type=hidden id="latLngStr" name='latLngStr'>
    <input type="submit" id="submit" value="Localiser" />
    </form>
     
    <div id="map" style="width: 400px; height: 300px"></div>
     
    <script type="text/javascript">
     
        var geocoder = new GClientGeocoder();
     
       function showAddress(address) {
     
            if (geocoder) {
                geocoder.getLatLng(address, function(point) {
                    if (!point) { /* Si les coordonnées n'ont pas été trouvés */
                        alert("Impossible de localiser l'adresse :\n\n" + address);
                    } else {
    				var latLngStr = '(' + point.y + ', ' + point.x + ')';
    				var retour=latLngStr;
    			    return (retour);
                    }
                });
            }
     
        }
     
    </script> 
    </body>
    </html>

    code de afficher.php

    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
    <html>
    <body>
    <?php 
     
    if(isset($_POST['latLngStr']))
    {
            $calcul=$_POST['latLngStr'];
    }
    else
    {
            $calcul="pas de valeur";
    }
     
    echo "$calcul<br>";
     
    ?>
    </body>
    </html>
    le probleme c'est que la fonction showadress renvoie la valeur "undefined" ;
    pourtant, si je met alert (retour) au lieu de return (retour) dans la fonction, j'ai bien une alerte javascript avec les coordonnées souhaitées...
    alors ou est le pb? ca fait plus de 3 jours que je m'arrache les cheveux la dessus..
    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    enlève les parenthèses après return;

    par ailleurs, attention à la syntaxe IE quand tu passes le champ texte en paramètre: showAddress(address_rech.value);

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut
    bonjour,
    merci pour la réponse.
    j'ai enlevé les parentheses mais ca ne change rien..
    sinon concernant la syntaxe IE je n'ai pas compris ce que tu voulais dire..en tout cas j'ai testé sous IE et FF et le résultat est le même..

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    place ton return hors des conditions, en fin de fonction;

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    il serait bon aussi de déclarer
    avant la fonction:

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut
    merci pour les idées mais toujours pareil, il renvoie "undefined"...

  7. #7
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    bonk, attends, je réécris un peu ton code...

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    peut-être quelque chose comme ça:


    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
    <form action="afficher.php" method="post" onsubmit="return showAddress(this);">
    <input type="text" id="address_rech" name="address_rech" value="" >
    <input type=hidden id="latLngStr" name='latLngStr' />
    <input type="submit" id="submit" value="Localiser" />
    </form>
     
    <div id="map" style="width: 400px; height: 300px"></div>
     
    <script type="text/javascript">
     
    var geocoder = new GClientGeocoder();
     
    var test;
     
    function showAddress(f) {
     
    	if (geocoder) {
    		geocoder.getLatLng(address, function(point) {
                    	if (!point) { /* Si les coordonnées n'ont pas été trouvés */
    		                alert("Impossible de localiser l'adresse :\n\n" + address);
                    	}
    			else {
    				f.elements["address_rech"].value='(' + point.y + ', ' + point.x + ')';
    				test=true;
                    	}
                	};
            }
     
    	return test; 
       }
     
    </script>
    de toute façon, tu avais une parenthèse malheureuse, glissée en fin de fonction

  9. #9
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    après relecture:

    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
    function showAddress(f) {
     
    	if (geocoder) {
    		geocoder.getLatLng(address, function(point) {
                    	if (!point) { /* Si les coordonnées n'ont pas été trouvés */
    		                alert("Impossible de localiser l'adresse :\n\n" + address);
                    	}
    			else {
    				f.elements[address_rech].value='(' + point.y + ', ' + point.x + ')';
    				test=true;
                    	}
                	})
            }
     
    	return test; 
       }
    ???

    et pour la "parenthèse", c'est moi qui étais distrait...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut
    salut
    merci pour ton temps
    j'ai testé mais je n'y croyais pas trop
    en effet la fonction showaddress doit prendre adress_rech comme argument et renvoyer les coordonnées..ca serait donc plutot un truc du style

    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
    function showAddress(f) {
     
    	if (geocoder) {
    		geocoder.getLatLng(f.elements[address_rech].value, function(point) {
                    	if (!point) { /* Si les coordonnées n'ont pas été trouvés */
    		                alert("Impossible de localiser l'adresse :\n\n" + address);
                    	}
    			else {
    				f.elements[latLngStr].value='(' + point.y + ', ' + point.x + ')';
    				test=true;
                    	}
                	})
            }
     
    	return test; 
       }
    mais ça, ça ne marche pas non plus (ça ne renvoit rien..)

  11. #11
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    bah, ton address_rech a peu d'importance, c'est juste un champ de formulaire, peu importe ta façon de le désigner;


    je ne sais pas ce que fait ta fonction geocoder.getLatLng() non plus... (tu ne l'as pas donnée ici);

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut
    salut
    la fonction showadress prend en argument address_rech, qui est une adresse postale (exemple : '75010, france') et renvoie les coordonnées latitude longitude (exemple : (48.2141, 2.1512) ).
    alors que ce que tu faisais dans la fonction que tu as réécrite c'est que tu mettais les coordonnées résultats dans address_rech..c'est ca que je voulais dire.
    pour ce qui est de geocoder.getLatLng, il s'agit d'une fonction googlemap qui cherche les coordonnées à partir de l'adresse (c'est donc le coeur de la fonction showaddress).

  13. #13
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    tu utilises les mêmes noms pour des champs de formulaire et des variables, alors...

    et entre nous, l'attribut value que tu passe à show_address prouve que address_rech est bien le champ texte du formulaire et non une variable définie ailleurs;

    bizarre tout ça!

  14. #14
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ok pour ta correction du paramètre dans ce que je proposais;

    tu veux dire que $calcul est toujours indéfinie?

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut
    oui oui address_rech est le champ texte du formulaire..en effet c'était peut etre ambigu..
    et voilà, $calcul est toujours indéfinie..exactement

  16. #16
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    salut!

    et tu as fait la modif, dans la balise form?

    onsubmit="return showAddress(this)"

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 129
    Points : 47
    Points
    47
    Par défaut
    salut
    oui j'ai fait la modif
    si tu me laisse une adresse mail je peux t'envoyer les fichiers si tu veux tester...

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    bonjours, j'ais à peu pres le meme problème sauf que moi j'appel la fonction avec visual basic.net...non pas avec de l'asp mais bel et bien du vb.

    Et donc je me suis penché sur le problème. La variable point.x contient la lattitude. La variable point.y la

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Désolé pour mes gros doigt, j'ai appuyé sur entrée.

    bonjours, j'ais à peu pres le meme problème sauf que moi j'appel la fonction avec visual basic.net...non pas avec de l'asp mais bel et bien du vb.

    Et donc je me suis penché sur le problème. La variable point.x contient la lattitude. La variable point.y la longitude.

    Donc je me suis dis que si je prenais une variable youplaboom et que je concaténais la latt et la long, vb la reconnaitrait comme une string et ca passerais comme une lettre a la poste, mais ca n'a bizarrement pas marché.

    Pour info le passage d'une varialbe string de javascript vers vb fonctionne sans problème en principe dans mes tests.

    Donc essai juste avec le php peut etre que ca marchera, mais a mon avis il y a un bloquage plus au niveau du type de la variable point qu'autre chose.


    donc [youplaboom = "/" + point.x + "/" + point.y + "/"]
    tu mets ca et ensuite tu [return(youplaboom)];

    Je suis débutant en javascript et j'avoue ne rien connaitremais je pense que le problème réside dans le type de la variable point(la variable point est un objet).

    préviens moi si ca marche, bonne chance moi j'ai laissé tomber pour le moment.

Discussions similaires

  1. transmission variable(s) php vers javascript
    Par Didier100 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/12/2009, 15h00
  2. Transmission variables javascript asp.net
    Par oclone dans le forum ASP.NET
    Réponses: 13
    Dernier message: 24/12/2008, 15h10
  3. transmission variable javascript
    Par wilhem dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/05/2008, 09h17
  4. Variables javascript non correctement définies
    Par LLaurent dans le forum XMLRAD
    Réponses: 5
    Dernier message: 11/05/2004, 12h39

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