我正在为 Firefox 构建一个 javascript 组件,它将接收一个邮政编码,并返回当前的天气状况。
地下天气的示例代码使用 jQuery,但据我了解,我无法将此代码包含在我的 javascript 组件中,因为 javascript 没有包含其他 javascript 文件的功能。
无论如何,我已经建立了我的骨架代码。它接受邮政编码并建立 url
(例如:http ://api.wunderground.com/api/e17115d7e24a448e/geolookup/conditions/q/22203.json )
我尝试通过以下方法从该 url 下载数据:
getWeatherByUrl: function(url)
{
var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);
var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD",Components.interfaces.nsILocalFile);
file.append("weather-forecaster.dat");
var urlURI = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService).newURI(url, null, null);
persist.saveURI(urlURI,null,null,null,"",file);
return url;
}
这应该将文件下载到用户的配置文件目录。它确实在那里创建了文件。但是,它看起来并不包含来自地下天气的 json 数据。
到底发生了什么?我将如何下载文件?我相信当该 url 被传递到地下天气时,会有一个查询,但这并不重要,因为 .json 页面是从他们那里吐出来的,对吧?
有没有办法在不下载文件的情况下做到这一点,而是通过流式传输和解析它?