2015-05-29 4 views
1

У меня большие проблемы, я не понимаю, почему эта вещь не работает. Мне нужно сделать запрос API для каждого значения массива, и если я посмотрю в своем консоль javascript, запрос обслуживается, но мне нужно значение широты и долготы внутри запроса. Проблема заключается в том, что вне запроса API у меня есть 4 значения (2 лата и длина для каждого элемента массива), а внутри запроса API я нахожу только последние два лата и долго, почему? это не кажется, действительно нет смысла, и я не знаю, где эта проблема может be.Here это кодЧто-то не так с запросом 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 KEY, но так как это для некоммерческого использования, любой может получить его с сайта. Надеюсь, мой вопрос был ясен, потому что это проблема что это сложно даже объяснить :) спасибо заранее.

ответ

0

Функция done ссылается на значение lat,lng, определенное ранее, и поскольку оно является асинхронным, например, может потребоваться некоторое время для возврата и не блокирует выполнение сценария в цикле, он всегда будет давать вам последние определенные значения, поскольку он, скорее всего, возвращается только после того, как все остальные значения были обработаны. Вам нужно будет подать правильные данные на обратный вызов в функции done.

попробовать прохождение lat и lng в качестве аргументов в 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 
    } 
}); 
+0

Я просто попытался, теперь он не печатает ничего мне читаемое, выход консоли «Внутри успеха запроса [объект Object]» поэтому lat и lng не имеют числового значения:/@RobSchmuecker – Mirko

+0

@ yee379 Привет, я видел, что u ответил на что-то подобное здесь [ссылка] (http://stackoverflow.com/questions/3430380/how-can-i-pass -parameters-to-a-jquery-getjson-callback-method), но я понимаю, как это сделать в моем случае, не могли бы вы мне помочь? Спасибо заранее :) – Mirko

 Смежные вопросы

  • Нет связанных вопросов^_^