2014-02-19 53 views
0

我所試圖做的事:檢索XML數據,使用網頁

  • 獲取基於位置的關閉IP(完成)
  • 使用的城市和國家代碼使用openweather的API(完成)
  • 將XML讀入我的網頁,以便我可以顯示「溫度」字段。

這是我在網頁中使用XML的第一次冒險,我已經嘗試了3天,但沒有成功。我搜索了谷歌和stackoverflow,並嘗試了很多東西,包括SimpleXMLElement,沒有運氣。

我目前在我的頁面上只是一個生成的鏈接到您的位置的XML表。

<script language="JavaScript" src="http://j.maxmind.com/app/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> 

我怎樣才能顯示我的網頁上的必填字段的文本?

在此先感謝! :)

回答

1

可能更容易改變API調用返回JSON,在這種情況下,你可以再使用此代碼,臨時工都存儲在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>'); 
}); 
+0

這是容易得多!謝謝你,它完美的工作! –

+0

只是一個簡單的問題,當我在頁面中有該代碼時,它將用白色背景替換所有內容,並僅替換這些值。我嘗試將「document.write」行放在我的頁面中,但沒有任何內容出現。 –

0

你可以使用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); 
0

要顯示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)