使用来自forecast.io的JSONP API和WinJS

时间:2013-08-25 08:02:35

标签: javascript jquery windows-8 microsoft-metro winjs

首先,道歉,如果这是一个愚蠢的问题,我是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

1 个答案:

答案 0 :(得分:2)

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

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

然后访问forecastInfo对象属性。