Javascript nsIXMLHttpRequest仅在readyState 1之前执行

Javascript nsIXMLHttpRequest仅在readyState 1之前执行,javascript,firefox-addon,xul,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);

我使用以下脚本通过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的情况下,脚本在错误控制台中不会显示错误。

您的代码有两个问题:

您忘了调用req.sendnull。请求将仅在您调用时执行。 您正在执行异步请求,因为您指定为true。这意味着在您请求readyState时,请求仍将执行。您应该改为使用readystatechange侦听器,如下所示:

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

我建议看一看,其中包含上述示例和其他几个示例。

可能与您使用alert有关。尝试只使用window.dump而不是eadah!我犯了多么愚蠢的错误我怎么能忘记readystatechange,现在它对我来说太明显了,为什么它只是提醒1。thnx:没问题。忽视某些事情往往很容易,而从新的角度看问题会有所帮助。它解决了你的问题吗?不,我以前没听说过。我只是XUL的开发人员,并且喜欢在XUL中做一些修改。我注意到你没有标记任何问题的答案。请这样做,以便其他人也能从这种交流中受益。