我正在使用google maps API进行一些地理编码。 用户填写带有一些地址的表单,当单击提交按钮时,将调用codeAddress()函数,该函数应该执行地理编码,但它不起作用。 作为测试,我在初始化()中的文件硬编码地址并调用codeAddress函数。 当页面准备就绪时调用codeAddress,它可以正常工作,但是当它被onclick脚本调用时,它不起作用(firebug没有返回任何错误!)。
有人可以帮忙吗? 感谢
(您可以将代码粘贴到此处:http://code.google.com/apis/ajax/playground/?exp=maps#map_simple,或更改google api密钥)
<!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&v=2&sensor=false&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>
答案 0 :(得分:1)
在codeAddress();
事件调用onclick
后立即向我看,您的POST立即完成。因此,它看起来代码失败了,但实际上它正在运行。
你能做的是:
1)使用onclick事件删除表单,只需一个按钮。例如:
<input type="button" value="Submit" onclick="codeAddress();" />
2)通过添加return false;
,在事件onclick命中时禁用提交表单。例如:
<form action="" method="POST">
<!-- stuff -->
<input type="Submit" value="Submit" onclick="codeAddress();return false;" />
</form>