Я пишу небольшую программу на JavaScript, которая выполняет веб-вызовы для получения информации о погоде, когда пользователь нажимает на карту.Это мой код:
//get the three letter airport code
var text = kmlEvent.featureData.name;
//service to get woeid
var woeid_url = 'http://where.yahooapis.com/geocode?name=';
xmlhttp = new XMLHttpRequest();
//has to be sync, since next request depends on it
xmlhttp.open('POST', woeid_url + text, false);
xmlhttp.send(null);
//now we get the relevent info from the XML
xmlDoc = xmlhttp.responseXML;
woeid_xml = xmlDoc.getElementsByTagName('woeid');
//parse the xml and get the woeid
woeid = woeid_xml[0].childNodes[0].nodeValue;
//with the woeid found, we can make the weather request
weatherhttp = new XMLHttpRequest();
var weather_url = 'http://weather.yahooapis.com/forecastrss?w=' + woeid + '&u=f';
//this is async
weatherhttp.open('POST', weather_url, true);
weatherhttp.onreadystatechange = function() {
if (weatherhttp.readyState == 4) {
alert(weatherhttp.status);
}
}
weatherhttp.send(null);
Он звонит в Yahoo, чтобы узнать, где находится пользователь.Это работает, и я получаю горе просто отлично.Однако, когда я делаю второй вызов метеорологической службе, он ничего не возвращает и 0 в качестве кода состояния.
Если я изменю вторую часть на синхронизацию вместо асинхронной, я все равно получу ту же ошибку.Кто-нибудь видит, что я делаю не так?Если я скопирую weather_url в свой браузер, он загружается просто отлично.Я не понимаю, почему первая часть работает, но не вторая.Я очень плохо знаком с JavaScript и AJAX, поэтому действительно не знаю, что делаю.
Используемый мной браузер - FireFox, если это помогает.