То, что я пытаюсь сделать:
Это мое первое предприятие по использованию XML на веб-страницах, и я пробовал уже 3 дня без успеха. Я искал google и stackoverflow, и до сих пор пробовал много вещей, включая SimpleXMLElement, без везения.
То, что у меня есть на моей странице, - это просто сгенерированная ссылка на лист XML для вашего местоположения.
<script language="JavaScript" src="/geoip.js"></script>
<script language="JavaScript">
var country = geoip_country_code();
var city = geoip_city();
document.write('<a href="http://api.openweathermap.org/data/2.5/weather?q=' + city + ',' + country + '&mode=xml&units=metric">Link text</a>');
</script>
Как я могу отображать текст из обязательного поля на моей странице?
Заранее спасибо! :)
Возможно, было бы проще изменить вызов API для возврата JSON, и в этом случае вы могли бы использовать этот код, temps хранятся в temp, temp_min и temp_max.
var country = geoip_country_code();
var city = geoip_city();
$.getJSON('http://api.openweathermap.org/data/2.5/weather?q=' + city + ',' + country + '&mode=json&units=metric', function( json ) {
var temp = json.main.temp;
var temp_min = json.main.temp_min;
var temp_max = json.main.temp_max;
document.write( 'Temp: ' + temp + '<br>');
document.write( 'Temp Min: ' + temp_min + '<br>');
document.write( 'Temp Max: ' + temp_max + '<br>');
});
Вы можете использовать библиотеку javascript для преобразования xml в объект javascript - одна такая библиотека называется xml2json, она работает как плагин jQuery: http://www.fyneworks.com/jquery/xml-to-json/
Тогда вы можете просто сделать:
var xmlObject;
$.ajax({
url: url_of_xml,
success: function(data) {
xmlObject = $.xml2json(data);
}
});
Затем вам просто нужно поместить данные на свою страницу. Объект в моем примере фальшив, но он дает вам идею:
// put this line in the success callback of your ajax call
// after you create the xmlObject
$('#temp').html(xmlObject.weather.temp);
Чтобы отобразить temperature
вы получаете XML и читаете один из трех атрибутов температуры из возвращаемого XML:
$.get("http://api.openweathermap.org/data/2.5/weather?q=' + city + ',' + country + '&mode=xml&units=metric", function(xml) {
avg = $(xml).find("temperature").attr("value"));
max = $(xml).find("temperature").attr("max"));
min = $(xml).find("temperature").attr("min"));
(используя JQuery)