加载外部网站的内容

时间:2011-06-13 03:07:52

标签: html ajax curl load frame

我需要在我的网站上显示另一个外部网站的内容。通常<iFrame>标记可以执行此操作。但我的要求不是整个内容,只是该网站的一部分。例如,该网站的布局包含3个部分<div id="header"><div id="sidebar"><div id="content"。我的意思是我只想显示"id=content"部分。我该怎么做?

我尝试了$("$my-content").load("http://www.anothersite.com #load-content"),但没有工作。

3 个答案:

答案 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配置,那你就有点运气了。)