2

XMLファイルを返信するFirefox SDKでサーバーリクエストを行っています。

XML ファイルを解析して 2 つの特別な値を取得し、それらをグローバル配列 (onComplete関数内) に入れています。

私の問題は、配列が要素の値を保存しないことであり、その0理由1がわかりません!

私の2番目の問題は、現在のタブのアドオンでリクエストを呼び出したいことですurl(つまり、複数回)。リクエストモジュールが「各リクエストオブジェクトは1回使用するように設計されています」と言っているのは知っていますが、複数回呼び出すことは可能ですか?

私はいつもこのエラーを受け取ります:

エラー: このリクエスト オブジェクトは既に使用されています。新しいリクエストを作成するには、新しいものを作成する必要があります。

var Request = require("request").Request;
var {Cc, Ci} = require("chrome");
var parser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser);
var setURL = "example.org";
var exampleArray = new Array();

function parseResponse(response) {  
    var xml = parser.parseFromString(response.text, "application/xml");  
    exampleArray[0] = xml.getElementsByTagName("example")[0].getAttribute("example"); // integer value
    exampleArray[1] = xml.getElementsByTagName("example2")[0].getAttribute("example2"); //integer value
 }

var exampleRequest = Request({
      url: "http://www.example.com",
      onComplete: parseResponse, 
})
exampleRequest.get();

console.log("exampleArray" + exampleArray.length); //always 0

ありがとう

4

1 に答える 1

1

再利用可能な関数でリクエスト呼び出しをラップするだけです。Requestコンストラクターであるため、複数のリクエストをインスタンス化できます。ただし、各リクエストでリクエストできる URL は 1 つだけです。

function request (url) {
  Request({
    url: url
    onComplete: parseResponse, 
  }).get();
}

XML の問題については、個々のノードをコンソールに記録するだけで、おそらくどこかで期待したものではありません。

于 2013-10-11T20:57:30.020 に答える