Загрузить контент внешнего сайта - PullRequest
2 голосов
/ 13 июня 2011

Мне нужно отобразить содержимое другого внешнего сайта на моем сайте. Обычно тег <iFrame> может это сделать. Но мое требование не весь контент, а только часть этого сайта. Например, макет сайта состоит из 3 частей: <div id="header">, <div id="sidebar">, <div id="content". Я имею в виду, я хочу только отображать "id=content" часть. Как мне это сделать?

Я пытался $("$my-content").load("http://www.anothersite.com #load-content"), но не работает.

Ответы [ 3 ]

7 голосов
/ 13 июня 2011

Это связано с междоменными ограничениями безопасности 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");
0 голосов
/ 13 июня 2011

Настройте ваш запрос AJAX на попадание в PHP-скрипт, который загружает контент (то есть, curl) и возвращает его в виде ответа xhr AJAX. Ответ AJAX (в вашем случае, частичная страница) может быть загружен и вставлен в текущую страницу в соответствии, например, с идентификатором целевого элемента.

Посмотрите на этот вопрос, это в значительной степени ваша проблема: https://stackoverflow.com/questions/3928228/php-and-curl-get-ajax-data

Библиотека javascript, такая как jQuery, избавляет от AJAX много хлопот: http://api.jquery.com/load

И если у вас все еще возникают проблемы, отладка ajax с помощью Firebug значительно упрощает задачу, поскольку вы можете видеть, что происходит с запросом.

(Если у вас нет серверных сценариев и вы не можете редактировать конфигурацию Apache, вам не повезло, хотя.)

0 голосов
/ 13 июня 2011

самый простой (и кроссбраузерный) способ - написать серверную программу (на PHP или Perl), которая находится на вашем сервере и которую вы вызываете локально, которая затем отправляется и получает то, что вы хотите от удаленного сайта.

Если чужой домен находится под вашим контролем, есть способы сделать это в простом javascript, но в первом случае это намного проще.

...