我尝试使用HTML5s地理位置来获取用户位置的纬度和经度,然后将这些值传递给ajax调用。
我想做什么?
到目前为止我做了什么?
到目前为止,我已将ajax调用放在成功回调中,以便一旦结果可用,就会进行ajax调用。我现在要等到有错误消息,以便出现错误,可以通过传递空值进行ajax调用。
发生了什么事呢?
当用户允许共享位置时,会进行ajax调用,但是,如果用户决定不共享位置,则不进行ajax调用,而是打印出错误消息。我不确定如何更改我的代码,以便在进行AJAX调用之前监听成功和错误回调。
我到目前为止编写的代码:
//error callback
var showError = function(error) {
var errorMessage = "Unknown Error";
switch(error.code) {
case error.PERMISSION_DENIED:
errorMessage = "User denied the request for Geolocation.";
break;
case error.POSITION_UNAVAILABLE:
errorMessage = "Location information is unavailable.";
break;
case error.TIMEOUT:
errorMessage = "The request to get user location timed out.";
break;
case error.UNKNOWN_ERROR:
errorMessage = "An unknown error occurred.";
break;
}
console.log(errorMessage);
};
var lat = function(callback) {
navigator.geolocation.getCurrentPosition(function (position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
callback.call(null, lat, lon);
}, showError);
};
//get the latitude and longitude
var getPosition = function() {
lat(function (latitude, longitude) {
alert("lat: " + latitude + ", lon: " + longitude);
//AJAX call made here once the latitude and longitude are returned.
});
};
getPosition();
答案 0 :(得分:0)
我不是100%确定我理解正确,但是在你自己打印错误之后仍然可以在错误时调用回调函数,如下所示:
var lat = function(callback) {
navigator.geolocation.getCurrentPosition(function (position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
callback(lat, lon);
}, function(error) {
showError(error);
callback();
});
};
var getPosition = function() {
lat(function (latitude, longitude) {
alert("lat: " + latitude + ", lon: " + longitude);
// AJAX call made here once the latitude and longitude are returned.
// In case of error, latitude and longitude will both be undefined
});
};