使用JS XMLHttpRequest的NS_ERROR_FAILURE

时间:2013-03-14 07:10:31

标签: javascript cross-domain

我正在尝试使用firefox加载网页的源代码,如“Javascript:The Definitive Guide”p.481所示。

这是我的代码:

  var request = new XMLHttpRequest();

  request.open("GET", "http://finance.yahoo.com/q?s=PG", false);

  request.send(null);

  if (request.status==200)  { alert(request.responseText);  }

  else {alert("Error "+request.status + ": "+request.statusText);} 

  </script>  

Firebug显示GET语句,然后是200 OK X 338ms。

看起来很成功(代码200)。

但下一个Firebug行说:NS_ERROR_FAILURE,request.send(null);,没有进一步说明。

并且都没有执行警报。

如果我使用帮助模式,它也无济于事,也不会在Chrome中运行。我没有运行弹出窗口或Cookie或广告拦截器。

使用LWP get()将页面加载到perl中。

如果这是一个不可避免的跨域禁忌,为什么“权威指南”不这样说呢?

我知道JSONP会返回JSON。我不想那样 - 我只想要一个带有原始源的字符串,就像perl LWP get()一样。

使用Javascript这是不可能的吗?

我想我可以编写一个批处理文件,该文件使用perl来获取源代码并将其放入一个名称被硬编码到JS中的JSON文件中。但是我想避免那种混乱。

1 个答案:

答案 0 :(得分:0)

如果有帮助, 我曾经遇到过这个问题几次,并再次遇到它。如果this question的答案对您没有帮助,请尝试添加以下帮助我的行:

request.overrideMimeType('text/xml; charset=UTF-8'); // needed to get utf8 req's to work

或此调试行(您可以在浏览器的Web控制台上监视)

request.onreadystatechange = function() {console.log("statechanged. url= " + url);};

之前

request.open()

其中url是一个包含您尝试请求的网址的var。如果在获取网址时遇到问题,有时它会给你一个神秘的错误,在我的(最后)案例中,这是因为网址格式错误。希望能帮到那里的人。