2

我正在使用我的 firefox sdk 进行服务器请求,该 sdk 回复了一个 XML 文件。

我正在为两个特殊值解析 XML 文件并将它们放入一个全局数组中(在我的onComplete函数中)。

我的问题是数组没有保存元素中的值,01不知道为什么!

我的第二个问题是我想在我的插件中为当前选项卡调用一个请求url(这意味着不止一次)。我知道请求模块说“每个请求对象都设计为使用一次”,但是否可以多次调用它?

我总是收到这个错误:

错误:此请求对象已被使用。您必须创建一个新请求才能发出新请求。

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。

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

对于 XML 问题,只需控制台记录各个节点,可能不是您所期望的。

于 2013-10-11T20:57:30.020 回答