1

我遇到了大麻烦,我不明白为什么这件事不起作用。我需要为数组的每个值发出 API 请求,如果我在控制台 javascript 中查看请求,但我需要纬度和请求中的经度值。问题是在 API 请求之外我有 4 个值(数组的每个元素 2 个纬度和经度),而在 API 请求中我只找到最后两个纬度和经度,为什么?似乎真的没有意义,我不知道问题可能出在哪里。这是代码

var luoghi = {"city":[
                    { "lat":"45.46" , "lng":"9.19" , "name":"Milano" },
                    { "lat":"41.12" , "lng":"16.86" , "name":"Bari" }
            ]}; 
var arr=[];
for(var i in luoghi.city){  
lat = luoghi.city[i].lat;
lng= luoghi.city[i].lng;

console.log("Before API request "+lat+" "+lng);//here i have the right 4 values

var wUnderAPI = "http://api.wunderground.com/api/"+API_WU+"/forecast/q/"+lat+","+lng+".json?callback=?";
$.getJSON( wUnderAPI, {format: "json"}).done(function( data ) {
    if(typeof data['forecast']['simpleforecast']['forecastday'] != 'undefined'){  // controllo esito richiesta json
            console.log(" Inside the request "+lat+" "+lng); //here just the bari lat & lng 
    }
});
}

API_WU 是我的私有 API 密钥,但由于它是非商业用途,任何人都可以从网站上获得。希望我的问题很清楚,因为这是一个很难解释的问题 :) 在此先感谢。

4

1 回答 1

0

您的done函数引用了lat,lng先前定义的,并且由于它是异步的,例如,它可能需要一些时间才能返回并且不会阻止脚本在循环中进行,它总是会为您提供最后定义的值,因为它很可能只在所有其他值之后返回值已处理。您需要将正确的数据提供给done函数中的回调。

尝试将latandlng作为参数传递给done

$.getJSON( wUnderAPI, {format: "json"}).done(function( data, lat, lng ) {
    if(typeof data['forecast']['simpleforecast']['forecastday'] != 'undefined'){  // controllo esito richiesta json
            console.log(" Inside the request "+lat+" "+lng); //here just the bari lat & lng 
    }
});
于 2015-05-29T11:16:19.003 回答