Tôi có một nút mà tôi đã kết nối onclick với một cuộc gọi để truy xuất vị trí của người dùng và sau đó sử dụng vị trí để thực hiện một cuộc gọi khác để truy xuất danh sách các vị trí lân cận. Đối với một số lý do phương pháp thành công định vị được gọi hai lần vào lần nhấp thứ hai của nút.Tại sao javascript này được gọi hai lần?
Vì vậy, tôi tải trang, nhấp vào nút, cho phép sử dụng vị trí của tôi và nó sẽ thực hiện một yêu cầu ajax để nhận các vị trí lân cận. Điều này hoạt động tốt.
Tôi nhấp lại vào nút, cho phép sử dụng vị trí của tôi (lần nữa), nó sẽ thực hiện một yêu cầu ajax để nhận vị trí, chờ ~ 2 giây và sau đó thực hiện yêu cầu khác bằng cùng tọa độ mà không cần tôi cho phép. Vì vậy, phương pháp thành công đã được nhận được gọi là hai lần, nhưng tôi không chắc chắn lý do tại sao.
$("#FindLocation").click(function() {
myScript.findNearbyLocations(displayData, displayError);
});
Chức năng nhấp này không được gọi hai lần và tôi đã nhận xét tất cả mã hiển thịData và 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);
});
}
}
Bất cứ ai nhìn thấy nơi tôi đã đi sai?
Chỉnh sửa: Tôi không nghĩ đánh dấu là vấn đề. Tôi chỉ sử dụng các trang web cơ bản để thử nghiệm. Không có kiểu dáng hoặc các yếu tố khác vào lúc này.
<form id="form1" runat="server">
<div>
<MyControls:Search ID="Search" runat="server" />
</div>
</form>
và điều khiển người dùng (cùng với tất cả các javascript cần thiết bao gồm)
<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>
không nên bậtĐảm bảo trên dòng cuối cùng của bạn ở đó? – DOK
@DOK, điều đó sẽ phụ thuộc vào phương thức 'onFailure' của anh ta với thông số được truyền cho nó. – CaffGeek
@DOK, không, chức năng đó chỉ thực hiện trong việc trình duyệt có hỗ trợ tính năng định vị navigator.geolocation hay không. Vì chúng tôi đã đưa nó vào câu lệnh if, tôi biết nó được hỗ trợ nhưng người dùng có thể đã từ chối quyền truy cập để sử dụng vị trí của họ. – Brandon