nsIXMLHttpRequest 仅执行到readyState 1

发布于 2024-09-30 23:27:26 字数 351 浏览 4 评论 0原文

我正在使用以下脚本通过 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 后,该脚本在错误控制台中不会显示任何错误。

I am using the following script to load some data through the firefox extension 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);
}

It alerts just 1.
The script shows no error in the error console with the strict javascript being enabled.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

红墙和绿瓦 2024-10-07 23:27:26

您的代码存在两个问题:

  • 您忘记调用 req.send(null)。该请求仅在您调用 send()< 时执行/a>.
  • 您正在进行异步请求,因为您指定了 第三个参数 < code>open()true。这意味着当您请求 readyState 时,该请求仍将执行。您应该像这样使用readystatechange监听器:

    req.onreadystatechange = function (aEvt) {
        if (req.readyState == 4) {
            if(req.status == 200)
                转储(req.responseText);
            别的
                dump("加载页面时出错\n");
        }
    };
    

我建议查看有关使用XMLHttpRequest的文档,其中包含上面的示例和其他几个示例。

There are two problems with your code:

  • You've forgotten to call req.send(null). The request will only execute when you call send().
  • You're doing an asynchronous request, because you specified the third parameter for open() to be true. This means that by the time you request the readyState, the request will still be executing. You should instead use a readystatechange listener as so:

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

I suggest taking a look at the documentation on Using XMLHttpRequest, which contains the example above and several others.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文