设置全局变量但未获得预期结果

时间:2014-11-29 23:25:43

标签: javascript json global-variables javascript-objects

我在设置一些全局变量时遇到问题,这些变量要在我编写的脚本之外使用。我相信我正确地设置它们但它们似乎没有合作。我的控制台输出始终是一个空字符串,因为它们应该在演示网页的主要调用函数中定义。所有其他数据似乎工作正常,如果我打印出来而不将其设置为变量,那么它工作正常。但是我需要变量,以便我可以在这个脚本之外调用它们。有什么想法吗?

var latitude = "", longitude = "";


$(document).ready(function() {
  $.ajax({
        dataType: "json",
        url:"http://api.geonames.org/searchJSON?q=Atlanta&maxRows=10&username=Demo"
}).then(function(data){
        console.log(data);
        latitude = data.geonames[0].lat; <---Variables are supposed to be set here
        longitude = data.geonames[0].lng; <----Variables are supposed to be set here
        $('.map-Latitude').append(data.geonames[0].lat); <----Works well
        $('.map-Longitude').append(data.geonames[0].lng); <----Works Well
    });
});


console.log("Latitude is: " + latitude); <---- prints out an empty string
console.log("Longitude is: " + longitude); <---- prints out an empty string

我似乎无法让这个工作,我觉得我正在设置变量,但他们似乎没有运作良好。谢谢!

1 个答案:

答案 0 :(得分:1)

您的$.ajax()来电是异步。在浏览器收到HTTP响应之前,调用的结果不可用。

console.log()来电置于<{1}}函数内