2

我正在尝试使用 firefox 加载网页的源代码,如“Javascript:权威指南”第 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 来获取源并将其放入一个 JSON 文件中,该文件的名称被硬编码到 JS 中。但我想避免这种混乱。

4

1 回答 1

0

如果有帮助,我之前遇到过几次这个问题,然后又遇到了。如果这个问题的答案对您没有帮助,请尝试添加以下对我有帮助的行:

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保存您尝试请求的 url 的 var在哪里。有时,如果获取 url 时出现问题,它会给你一个神秘的错误,在我的(最后一个)案例中,这是因为 url 格式错误。希望能帮助那里的人。

于 2014-11-28T05:59:13.120 回答