0

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がWeatherUndergroundに渡されるときにクエリが実行されていると思いますが、.jsonページがそれらから吐き出されるので、それは問題ではありませんよね?

ファイルをダウンロードせずに、ストリーミングして解析することでこれを行う方法はありますか?

4

1 に答える 1

1

XMLHttpRequestを使用して、このデータをダウンロードできます。

var request = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
                        .createInstance(Components.interfaces.nsIXMLHttpRequest);
request.open("GET", "http://api.wunderground.com/api/Your_Key/geolookup/conditions/q/IA/Cedar_Rapids.json");
request.addEventListener("load", function(event)
{
  var data = JSON.parse(request.responseText);
  alert(data.response.version);
}, false);
request.send(null);
于 2012-11-19T07:44:52.980 に答える