我需要在我的网站上显示另一个外部网站的内容。通常<iFrame>
标记可以执行此操作。但我的要求不是整个内容,只是该网站的一部分。例如,该网站的布局包含3个部分<div id="header">
,<div id="sidebar">
,<div id="content"
。我的意思是我只想显示"id=content"
部分。我该怎么做?
我尝试了$("$my-content").load("http://www.anothersite.com #load-content")
,但没有工作。
答案 0 :(得分:7)
这是由于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");
答案 1 :(得分:0)
最直接(和跨浏览器)方式是编写服务器端程序(在PHP或Perl中),它位于您的服务器上,并且您在本地调用然后从远程站点获取您想要的内容。
如果外国域名在您的控制之下,则可以通过直接的javascript进行操作,但以前的方式更容易。
答案 2 :(得分:0)
设置你的AJAX请求以点击加载内容(即curl)的PHP脚本并将其作为AJAX的xhr响应返回。例如,可以根据目标元素的id加载AJAX响应(在您的情况下,部分页面)并将其插入到当前页面中。
看到这个问题,几乎是你的问题: https://stackoverflow.com/questions/3928228/php-and-curl-get-ajax-data
像jQuery这样的javascript库从AJAX中解决了很多麻烦:http://api.jquery.com/load
如果你仍然遇到问题,使用Firebug调试ajax会让事情变得更容易,因为你可以看到请求发生了什么。
(如果你没有服务器端脚本,并且无法编辑你的Apache配置,那你就有点运气了。)