2

首先,如果这是一个愚蠢的问题,我深表歉意,我是 WinJS 的新手,对 Javascript 也比较陌生,但在遇到这个障碍之前我一直做得很好。

我目前正在使用 WinJS 开发适用于 Windows 8 的天气应用程序,并且我正在尝试从 forecast.io API 中提取数据,在我的情况下,该 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”来获取当前温度数据,但在这种情况下我无法获得类似的工作。

任何帮助或指示将不胜感激!

PS对不起,如果我扼杀了任何术语,我正在尽我所能。

这是 data.responseText 返回的内容,有很多,所以我把它放在一个文本文件中。 http://justadddesign.net/data.responseText.txt

4

1 回答 1

2

这是因为data.responseText字符串不是对象。尝试:

var forecastInfo = JSON.parse(data.responseText);

然后访问forecastInfo对象属性。

于 2013-08-25T19:47:02.697 回答