我需要获取HTML5 / Javascript Geolocations将位置数据传递给ajax调用以存储在数据库中。我遇到的问题是(1)Geolocation调用是异步的,(2)变量范围正在绊倒我。
我正在考虑两种方法,但我不确定如何让任何一种方法正常工作。以下是方法:
需要传递以下代码中this
的{{1}}值:
.click
或者我可以尝试推迟ajax调用,直到jQuery("div#normal .m_action").click(function() {
navigator.geolocation.getCurrentPosition(storeAction(action), errorAction);
});
function storeAction(action, position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
var accuracy = position.coords.accuracy;
jQuery.ajax({
url: "./action.php",
type: "POST",
data: { action: this.id, lat: latitude, long: longitude }
}).done(function(result) {
if(result == "error") {
alert("Error in ajax action.php file");
} else {
jQuery(action).removeClass("m_action");
jQuery(action).html(result);
}
}).fail(function(result) {
alert("There was an error with the ajax call itself")
});
}
调用完成。下面的代码只是对我所说的粗略估计,尽管我(当然)意识到它远非正确:
getCurrentPosition
答案 0 :(得分:2)
getCurrentPosition()
方法定义为:
navigator.geolocation.getCurrentPosition(success, error, options)
其中success
是一个回调函数,它将Position
个对象作为唯一的输入参数。使用该对象,您可以获得纬度,经度和准确度。参数action
可以作为全局变量提供。
答案 1 :(得分:0)
Here您可以找到有关HTML5地理位置的示例。在您的情况下,您可以创建一个像
这样的javascript函数namespace NameSpace
{
class Class1 {}; class Class2 {};
}
template <class T> // example Class1 or Class2
void f(T object) {
NameSpace::T obj; // Something like this, but it doesn't work
}