我正在尝试使用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文件中。但是我想避免那种混乱。
答案 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。如果在获取网址时遇到问题,有时它会给你一个神秘的错误,在我的(最后)案例中,这是因为网址格式错误。希望能帮到那里的人。