我觉得这很愚蠢,但是如何在函数
之外得到变量crdnts$(function() {
var coordinates = {
LoadDefault: function() {
$.getJSON('http://api.wipmania.com/jsonp?callback=?', '', function(json) {
var crdnts = json.latitude + "," + json.longitude;
//alert(crdnts);//this works
return crdnts;
});
}
};
alert(coordinates.LoadDefault());//I would like to get the crdnts variable here.
});
或
答案 0 :(得分:2)
你做不到。您的Ajax调用是异步的,因此无法预测何时返回。
你唯一能做的就是在成功回调中做一些事情,或set your Ajax to be synchronous如果它是一个选择(在这种情况下,所有JS执行将等到请求完成)。
例如,您可以在Ajax调用成功完成后调用函数:
$(function() {
var coordinates = {
LoadDefault: function() {
$.getJSON('http://api.wipmania.com/jsonp?callback=?', '', function(json) {
var crdnts = json.latitude + "," + json.longitude;
callSomething(crdnts);
});
}
};
function callSomething(x) {
alert(x);
}
});
答案 1 :(得分:2)
javascript ajax是异步的。所以你需要使用回调:
$(function() {
var coordinates = {
LoadDefault: function() {
$.getJSON('http://api.wipmania.com/jsonp?callback=?', '', function(json) {
var crdnts = json.latitude + "," + json.longitude;
call_alert(crdnts); //callback
});
}
};
function call_alert(cr){
alert(cr);
}
coordinates.LoadDefault();
});