首先,道歉,如果这是一个愚蠢的问题,我是WinJS的新手,对Javascript来说相对较新,但我一直很好,直到遇到这个障碍。
我目前正在使用WinJS为Windows 8开发天气应用程序,我正在尝试从forecast.io API中提取数据,在我的情况下,这是以JSONP格式提供的。 我很容易使用jQuery和.getJSON在浏览器中工作,但由于我必须使用WinJS.xhr来请求数据,所以我遇到了一些困难。
我可以使用以下代码将数据拉得很好:
function getWeather() {
WinJS.xhr({
type: "GET",
url: "https://api.forecast.io/forecast/*ommited API key*/-36.044394,146.953718?callback=?&units=si",
headers: { "Content-type": "application/json" }
}).then(function complete(data) {
var weatherData = data.responseText;
(new Windows.UI.Popups.MessageDialog(weatherData, "Success!")).showAsync().done();
}, function error(data) {
(new Windows.UI.Popups.MessageDialog("Failed.", "Error")).showAsync().done();
});
}
这显示了弹出窗口中的数据,所以我确定我已经访问过了。问题是,我无法用它做任何事情。在jQuery中,我只是使用“data.currently.temperature”来获取当前的温度数据,但在这种情况下我无法得到类似的东西。
非常感谢任何帮助或指示!
对不起,如果我屠杀了任何术语,我就会尽力而为。
这是data.responseText返回的内容,有很多,所以我把它放在一个文本文件中。 http://justadddesign.net/data.responseText.txt
答案 0 :(得分:2)
这是因为data.responseText
是字符串而不是对象。尝试:
var forecastInfo = JSON.parse(data.responseText);
然后访问forecastInfo
对象属性。