我有一个按钮,将其onclick钩在调用获取用户位置的方法上,然后再使用该位置来调用另一个方法以检索附近位置的列表。由于某种原因,在第二次单击按钮时,地理位置信息成功方法会被调用两次。
因此,我加载页面,单击按钮,允许使用我的位置,它将发出一个ajax请求以获取附近位置。这个运行良好。
我再次单击按钮,允许再次使用我的位置,它将发出一个ajax请求来获取位置,等待约2秒钟,然后使用相同的坐标再次发出另一个请求,而无需我允许权限。因此,成功方法必须被调用两次,但我不确定为什么会这样。
$("#FindLocation").click(function () {
myScript.findNearbyLocations(displayData, displayError);
});
这个点击函数不会被调用两次,而且我已经将displayData和displayError中的所有代码都注释掉了。
findNearbyLocations: function (onSuccess, onFailure) {
if (navigator.geolocation) {
browserSupportFlag = true;
navigator.geolocation.getCurrentPosition(function (position) {
alert('This is getting called twice except on the initial call.');
myScript.findStores(position.coords.latitude, position.coords.longitude, onSuccess, onFailure);
}, function () {
onFailure(true);
});
}
}
有没有人看出我哪里错了?
编辑:我不认为标记是问题所在。我只是在使用基本的网页进行测试。目前没有样式或其他元素。
<form id="form1" runat="server">
<div>
<MyControls:Search ID="Search" runat="server" />
</div>
</form>
并且用户控件(包括所有必要的javascript引用)
<script type="text/javascript">
$(document).ready(function () {
$("#FindLocation").click(function () {
myScript.findNearbyLocations(displayData, displayError);
});
});
</script>
<input type="button" id="FindLocation" value="Find Location" />
<div id="results">
</div>
onFailure
方法对传递给它的参数执行了什么操作。 - CaffGeekid='FindLocation'
的元素?不应该允许有重复的ID,但 JQuery 可以处理并将为每个元素运行事件。 - Spudley