2010-11-08 29 views
1

我正在使用以下脚本通过Firefox扩展UI加载一些数据。nsIXMLHttpRequest只执行至readyState 1

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错误控制台没有错误。

+0

可能与您使用alert()有关。试试只用window.dump代替 – MatrixFrog 2010-11-08 16:03:45

回答

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,其中包含了上面和其他几个人的例子。

+0

啊!我犯了多少愚蠢的错误。 :(我怎么能忘记readystatechange,现在它看起来如此明显,为什么它只是警报1. thnx :) – 2010-11-15 07:09:12

+0

没问题。往往很容易忽视某些事情,并采取新的观点有所帮助。它解决了你的问题吗? – 2010-11-15 10:16:47

+0

是的,它完美的工作。珍珠树是你的插件吗? :? – 2010-11-15 13:33:58