9

在 JS 中是否可以获取网页的内容并将其分配给变量?例如,为什么下面的玩具代码不起作用?

var req = new XMLHttpRequest();
req.open('GET', 'http://www.google.com', false);
req.send(null);
if(req.status == 200)
  alert(req.responseText);

有更好的方法/代码吗?

4

4 回答 4

12

使用服务器端代理,例如读取所需页面的 php-page,然后通过 javascript 对该代理进行 ajax 调用:

var req = new XMLHttpRequest();

req.open('GET', 'proxy.php?url=http://www.google.com', false);
req.send(null);

if(req.status == 200) {
   alert(req.responseText);
}
于 2011-03-14T14:36:25.883 回答
7

以上不起作用,因为出于安全考虑,Ajax 请求无法访问其他域上的文件/页面。通常,您可以使用 [在此处插入服务器端语言] 制作脚本来下载请求的页面。然后你的 javascript 可以向这个页面发出请求。

还有“JSONP”,但这通常用在提供特定 JSONP 访问的网站上,而大多数随机 URL 都没有。

于 2011-03-14T14:09:17.657 回答
5

出于安全原因,您不能使用 AJAX 向其他域发送请求。

于 2011-03-14T14:08:49.717 回答
2

如果你真的需要这样做,你可以尝试使用 jQuery 和 iFrames(阅读更多内容(阅读更多内容http://softwareas.com/cross-domain-communication-with-iframes)。

此外,您可以尝试使用 Access-Control-Allow-Origin: http://yourdomain:1234/在标题中,谷歌用于跨域资源共享。虽然它相对较新,但并非所有浏览器都知道这一点。这还取决于您是否可以控制其他服务器标头的生成以及其他一些事情。

于 2011-03-14T14:36:02.583 回答