加载外部网站的内容
我需要在我的网站中显示另一个外部网站的内容。通常<iFrame>
标签可以做到这一点。但我的要求不是全部内容,只是该网站的一部分。例如,该网站的布局有3个部分,<div id="header">
,<div id="sidebar">
,<div id="content"
。我的意思是我只想显示"id=content"
部分。我该怎么做?我试过$("$my-content").load("http://www.anothersite.com #load-content")
,但不能正常工作。加载外部网站的内容
这是由于AJAX跨域安全限制,一个诀窍是从服务器设置代理脚本 ,该代理脚本从不同站点(域)下载内容并将该代理用作JavaScript中的参考。
例子:(proxy.php)
<?php
$url = 'http://www.anothersite.com';
$htm = file_get_contents($url);
echo $htm;
?>
然后在你的脚本,而不是:
$("$my-content").load("http://www.anothersite.com #load-content");
使用代理:
$("$my-content").load("proxy.php #load-content");
最直接的(和跨浏览器)方式是编写一个服务器端程序(使用PHP或Perl),它位于服务器上,并且在本地调用,然后从远程站点获取所需内容。
如果你的控制下有外域,有办法用直接的javascript来做,但前者更容易。
设置您的AJAX请求来命中加载内容(即curl)的PHP脚本并将其作为AJAX的xhr响应返回。例如,可以根据目标元素的ID来加载AJAX响应(在您的情况下为部分页面)并将其插入到当前页面中。
看到这个问题,它几乎您的问题: https://*.com/questions/3928228/php-and-curl-get-ajax-data
JavaScript库像jQuery需要花费很多的麻烦了AJAX的:http://api.jquery.com/load
如果你还是有问题,调试带有Firebug的ajax让事情变得更容易,因为您可以看到请求发生了什么。
(如果你没有服务器端脚本,而不能编辑你的Apache配置,你有点失控运气,寿。)
但不会破目标网页包含非绝对网址和相关链接时的布局? – Mori 2013-11-29 06:46:03