2009-12-04 4 views
0

Je fais du géocodage en utilisant l'API Google Maps. L'utilisateur remplit un formulaire avec une adresse, et quand on clique sur le bouton Soumettre, une fonction codeAddress() est appelée, qui est supposée effectuer le géocodage, mais cela ne fonctionne pas. En tant que test, j'ai codé en dur l'adresse et appelez la fonction codeAddress lorsque le document est initialisé(). Lorsque codeAddress est appelé lorsque la page est prête, cela fonctionne bien, mais quand il est appelé par le script onclick, il ne fonctionne pas (aucune erreur renvoyée par firebug!).La fonction de géocodage fonctionne lorsqu'elle est appelée dans le script initialisé, mais pas dans le script onclick

Quelqu'un peut-il aider? Merci

(vous pouvez coller le code ici: http://code.google.com/apis/ajax/playground/?exp=maps#map_simple, ou modifier la clé api google)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8"/> 
<title>Google Maps API Sample</title> 
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"></script> 
<script type="text/javascript"> 

function initialize() { 
    if (GBrowserIsCompatible()) { 

    var map = new GMap2(document.getElementById("map_canvas")); 
    map.setCenter(new GLatLng(37.4419, -122.1419), 13); 

    codeAddress(); 
    } 

} 

function codeAddress() { 
    var geocoder = new GClientGeocoder(); 
    var address = "paseo montjuic, 30, barcelona, spain"; 
    geocoder.getLatLng(address, function(point) { 

     if (point) { 
      alert(point); 
     } else { 
      alert("Geocode was not successful"); 
     } 
    }); 
} 


</script> 
</head> 
<body onload="initialize()" onunload="GUnload()" style="font-family: Arial;border: 0 none;"> 
<div id="map_canvas" style="width: 500px; height: 300px"></div> 


<form action="" method="POST"> 
<!-- stuff --> 
<input type="Submit" value="Submit" onclick="codeAddress();" /> 
</form> 

</body> 
</html> 

Répondre

1

Attend me juste après codeAddress(); est appelé sur l'événement onclick, votre POST est fait immédiatement. Ainsi, il vous semble que le code a échoué, mais en fait, il fonctionne.

Qu'est-ce que vous pouvez faire est:

1) Retirez le formulaire, juste un bouton en utilisant l'événement onclick. Exemple:

<input type="button" value="Submit" onclick="codeAddress();" /> 

2) Désactiver forme soumettant lorsque événement OnClick résultats en ajoutant return false;. Exemple:

<form action="" method="POST"> 
<!-- stuff --> 
<input type="Submit" value="Submit" onclick="codeAddress();return false;" /> 
</form> 
+0

Mais si codeAddress() était appelé onclick, je verrais l'alerte, non? – jul

+0

cela fonctionnerait comme vous l'appelez du script. ce qui signifie que vous devriez voir l'alerte. – mauris

+0

Ok, il semble que la page se recharge lorsque le formulaire est soumis sans attendre codeAddress(). Fonctionne avec "return false". Merci! – jul

Questions connexes