begin process at 2012 05 29 21:19:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

Problème de return dans une fonction


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de return dans une fonction

samedi 13 novembre 2010 à 14:58:37 | Problème de return dans une fonction

jims34

Bonjour,

Tout d'abord je suis débutant avec javascript. Malgrè toutes mes recherches sur le web et mes divers essais, je ne suis pas arrivé à résoudre ce problème.

J'utilise google maps v3 pour afficher une carte sur mon site et faire divers traitements sur cette carte.

J'ai une fonction javascript à laquelle je demande de me renvoyer la latitude et la longitude d'une adresse passée en argument :

function codeAdresse(adresse) {
geocoder = new google.maps.Geocoder();
var address = adresse;
var sCoord = "Non init";
geocoder.geocode( { 'address': address}, function(results, status { if (status == google.maps.GeocoderStatus.OK) {
sCoord = results[0].geometry.location.toString();
} else {
alert("Geocode was not successful for the following reason: " + status);
sCoord = "Erreur";
}
});
return sCoord;
}

A l'appel de la fonction :

coord = codeAdresse("Labège, France")
je reçois "undifined"

Pourtant la ligne sCoord = results[0].geometry.location.toString(); est bien executée et renvoie bien une chaine contenant les coordonnées de l'adresse passée à la fonction. J'ai vérifié avec un alert(sCoord).
C'est bizarre parce que d'abord je reçois le "undifined" de retour et ensuite la fenêtre alert est affichée...

Qui peux m'aider à résoudre ce problème ?

Merci d'avance.
dimanche 14 novembre 2010 à 00:16:08 | Re : Problème de return dans une fonction

jdmcreator

Hmmm... Lorsque que tu appelles ta fonction geocode, ton deuxième paramètre est une fonction :
...
geocoder.geocode( { 'address': address}, function(results, status { if (status == google.maps.GeocoderStatus.OK) {
...

Celle-ci est appelé indépendamment du reste de ta fonction, donc dans ta fonction codeAdresse, sCoord n'est pas défini.

Il te faut donc faire une fonction callback, c'est-à-dire une fonction qui sera appelé lorsqu'il aura l'adresse et où tu pourras continuer. Malheureusement pour toi, ta source sera plus complexe ^^

Essaie ceci :

Code Javascript :

/***

Ci dessous ta fonction callback qui sera appelé une fois le résultat connu

***/

function callback(adresse){
alert("Votre adresse (ou tout autre texte): "+adresse);
}
/* Le reste du code modifié */
function codeAdresse(adresse) { 
geocoder = new google.maps.Geocoder(); 
var address = adresse; 
var sCoord = "Non init"; 
geocoder.geocode( { 'address': address}, function(results, status { if (status == google.maps.GeocoderStatus.OK) { 
callback(results[0].geometry.location.toString()); 
} else { 
alert("Geocode was not successful for the following reason: " + status); 
callback("Erreur"); 
} 
}); 

} 


N'hésite pas à me demander des explications si ça ne fonctionne pas, si tu ne comprends pas ou si tu te poses des questions

JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !

fr.jsinfo.wikia.com
dimanche 14 novembre 2010 à 10:07:59 | Re : Problème de return dans une fonction

PetoleTeam

Membre Club
Bonjour,
visiblement il s'agit d'une fonction requête asynchrone donc il te faut exploiter le retour lorsque la requête est effective et disponible
Code Javascript :
function codeAdresse(adresse) {
  geocoder = new google.maps.Geocoder();
  var address = adresse;
  var sCoord = "Non init";
  geocoder.geocode({
    'address': address
  }, function (results, status {
    if (status == google.maps.GeocoderStatus.OK) {
      sCoord = results[0].geometry.location.toString();
      //-- Appel a une function qui traite le resultat     
      alert( sCoord);
    }
    else {
      alert("Geocode was not successful for the following reason: " + status);
      sCoord = "Erreur";
    }
  });
//  return sCoord; // NE SERT A RIEN
}

;O)
mercredi 22 décembre 2010 à 11:38:11 | Re : Problème de return dans une fonction

jims34

Bonjour,

Je reviens sur ce problème que j'avais mis de coté pour le moment... Merci pour vos réponses à tous les deux.

Le problème c'est qu'il faut que ma fonction retourne quelque chose à une autre fonction.

Est-ce que la fonction callback peut s'en charger ?

J'ai essayé ça :

Code Javascript :
function callback(adresse){
    return(adresse)
}


Mais évidement ça ne fonctionne pas...

Merci d'avance,

Jean-Michel
mercredi 22 décembre 2010 à 13:02:30 | Re : Problème de return dans une fonction

PetoleTeam

Membre Club
Bonjour,
Est-ce que la fonction callback peut s'en charger ?
il te suffit d'appeler ta fonction dans la fonction callback, comme indiqué dans le code que je t'ai mis. Tu remplaces la fonction alert par ta fonction.
;O)
vendredi 24 décembre 2010 à 09:09:17 | Re : Problème de return dans une fonction

jims34

Bonjour,

Ce que je voulais dire c'est : est ce que la fonction callback peux faire le return vers la procédure qui appelle codeAdresse ?

J'ai essayé mais ça ne fonctionne pas.

Apparement cette fonction callback prend le relais sans faire de return ?

En tout ca merci, passez de bonnes fêtes.
vendredi 24 décembre 2010 à 13:18:19 | Re : Problème de return dans une fonction

PetoleTeam

Membre Club
Ce que je voulais dire c'est : est ce que la fonction callback peux faire le return vers la procédure qui appelle codeAdresse ?
non, la fonction callBack s'exécute hors du contexte initial et ce termine on ne sait quand, ce que tu peux faire, comme on te la dit, c'est déclencher une fonction pour traitement du résultat.
Si tu veux faire le traitement à la suite de l'appel il te faut passer en mode synchrone, dans ce cas la fonction en cours attendra la fin du traitement pour continuer.
Mais est ce que l'API le permet, à voir.

;O)


Cette discussion est classée dans : problème, fonction, adresse, return, scoord


Répondre à ce message

Sujets en rapport avec ce message

Problème de fonction de validation d'un formulaire [ par machmacha ] Bonjour a tous,j'ai un formulaire qui contient des champs et un bouton valider les voilà:........//les ch Problème d'appel de fonction [Javascript] [ par Sharkiller ] Bonjour, J'ai une fonction qui me pose problème: en fait, après que la boucle s'exécute, on dirait que ça termine la fonction... function Dev(){ n=0; fonction qui ne retourne rien [ par lOeil ] Bonjour à tous,je ne comprend pas j'ai une fonction ajax qui est censée me retourner responseText, je suis bien dans la boucle else if(reponse == "ret onload = Gros problème !!!!!!!!!! [ par Anakinele ] Voilà : Je veux charger ma page en pleine écran grace à la fonction ci-dessous en JS. J'ai mis un onload dans  pour executer ma fonction. Le problème Problème WYSIWYG avec Opera et fonction Contenteditable. [ par zlitus ] Bonjour. j'ai un petit problème, je dévloppe un widget pour Opera 9.x dans le but de faire un éditeur WYSIWIG. Il y a peu, j'ai découvert la fonctio Confirmation de suppression [ par newsmatique ] Bonjour,j'aurais aimer savoir où trouver une source en ajax qui apelle une jolie fenetre pour confirmer un évenement sur un formulaire, tel que l'envo Problème avec la fonction write() [ par mickadevelop ] Bonjour à tous J'ai constater un probleme avec l'utilisation de la fonction write. Lorsque j'utilise document.write('toto'); sous ie je constate qu'il fonction qui ne renvoie pas son return ? [ par caviar ] saluté ... j'ai un pb bizare ..j'aimerai passer en argument d'une fonction le résultat d'une autre fonction ... mais au lien de passer le résultat ça Problème de script pour une fonction plein écran [ par Mamacx ] Bonjour à tous, Je réalise actuellement un site (www.zeustd.com) en tant qu'amateur. (j'utilise Cool page) jaimerai vraiment introduire sur certaines Prblème de function [ par tepe ] BonjourJ'ai un problème avec une fonction externe.Dans mon ReFrame();popup(); Le problème, la fonction ReFrame f


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,226 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales