nsIXMLHttpRequest仅执行到readyState 1

时间:2010-11-08 10:06:16

标签: javascript firefox-addon xul

我使用以下脚本通过firefox扩展UI加载一些数据。

var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
var www = "http://localhost/view?url=http://google.com";
req.open('GET', www, true);

if (req.readyState){
    alert(req.readyState);
}

它仅警报1.
该脚本在错误控制台中显示没有错误,并且启用了严格的javascript。

1 个答案:

答案 0 :(得分:0)

您的代码存在两个问题:

  • 您忘了拨打req.send(null)。该请求仅在您致电send()
  • 时执行
  • 您正在执行异步请求,因为您已将the third parameter for open()指定为true。这意味着,当您请求readyState时,请求仍将执行。你应该改为使用readystatechange监听器:

    req.onreadystatechange = function (aEvt) {
        if (req.readyState == 4) {
            if(req.status == 200)
                dump(req.responseText);
            else
                dump("Error loading page\n");
        }
    };
    

我建议您查看the documentation on Using XMLHttpRequest,其中包含上述示例和其他几个示例。