Я пытаюсь написать скрипт для получения WOEID и интерфейса с API погоды Yahoo.Я создаю URL-адрес на основе значений широты и долготы из содержимого базы данных, которую я использую, и могу сделать это прекрасно.
Однако, когда дело доходит до сохранения этого URL-адреса в виде строки, которую я могуиспользовать в других функциях, у меня проблемы.После некоторого начального чтения кажется, что проблема связана с onreadystatechange и scope, но я никак не могу понять, как сохранить мою переменную.
Вот мой код:
//<![CDATA[
var latitude = "";
var longitude = "";
var yahooAppID = "";
var yql = "";
//example yahoo request
//http://where.yahooapis.com/geocode?q=38.898717,+-77.035974&gflags=R&appid=SKUTk24k
function getLatLng() {
var routeID = 5;
var get = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
get.open('POST','process.php', true)
get.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
get.send('command=fetch&rid='+routeID);
get.onreadystatechange = function(){
if(get.readyState==4 && get.status == 200) {
os = eval('(' + get.responseText + ')');
latitude = os.start.lat;
longitude = os.start.lng;
//var yql = 'select * from flickr.places where lat='+latitude+' and lon='+longitude;
yql = "select * from flickr.places where lat=" +latitude+ " and lon="+longitude;
}
document.write(yql);
}
document.write(yql);
}
function test() {
getLatLng();
}
//]]>
Кажется, что первая document.write(yql);
дает правильную строку, но вторая - нет, поэтому я знаю, что значение не застряло.
Заранее спасибо, если кто-нибудь может помочь.