Получить html внешнего url в jquery

Как я могу получить внешний URL-адрес HTML с помощью jquery?

Ответы

Ответ 1

Короткий ответ: вы не можете, потому что запросы AJAX ограничены одним и тем же (суб) доменом и портом Одинаковая политика происхождения.

Те же самые ограничения применяются к элементам iframe: вы не можете создать iframe, указывающий на внешнюю страницу, и захватить его HTML.

Обычным способом является использование серверной стороны script (написанной, например, на PHP), которая служит в качестве прокси: она извлекает содержимое внешнего сайта и возвращает его обратно на JavaScript. Он должен работать в том же домене, что и страница.

Очевидно, что с помощью этого решения относительные ссылки на URL-адреса, изображения, таблицы стилей и т.д. (например, ../images/image.gif) больше не будут работать, так как они вне контекста на вашей странице. Невозможно сказать, что это проблема в вашей ситуации. Одним из способов решения этой проблемы может быть использование тега <base>.

Ответ 2

Вам нужен jquery $.get

http://api.jquery.com/jQuery.get/

Пример: Ознакомиться с результатами запроса test.cgi с дополнительной полезной нагрузкой данных (HTML или XML, в зависимости от того, что было возвращено).

$.get("test.cgi", { name: "John", time: "2pm" },
   function(data){
     alert("Data Loaded: " + data);
   });

Изменить: это работает только в том случае, если ваша страница находится в одном домене.

Ответ 4

Вы можете использовать $.ajax или $.get для вызова URL-адреса в своем собственном домене, а затем использовать любой серверный язык, который вы используете для извлечения HTML-кода, и затем вернуть его.

Это два HTTP-запроса вместо одного, но это обойдется вашей проблемой.

Вы также можете кэшировать внешние HTML-сайты в своем внутреннем коде, чтобы запрос из Javascript не всегда приводил к двум запросам HTTP - конечно, все зависит от того, как часто будет изменяться HTML, который вы хотите захватить.

Небольшой поворот в этом случае будет заключаться в том, чтобы на вашем сервере выполнялась фоновая задача, которая извлекает внешний HTMl каждые X секунд и сохраняет его локально. Запросы вашего домена от вашего JS просто подбирают последнюю копию с вашего сервера. Это означает, что ваш запрос JS не замедляется, ожидая другого внешнего HTTP-запроса.

Ответ 5

Все обычные браузеры не разрешают Javasript Calls для доступа к страницам с другим (дополнительным) доменом из-за той же политики происхождения. Единственный способ обойти это - настроить какой-то "прокси" на своем собственном сервере (например, php Script), который работает под одним и тем же Доменом, получает информацию, которую вы хотите от третьего источника, и печатает их.

Ответ 6

Вы можете добавить на свой сайт PHP или любой другой серверный язык, который мог бы выступать в качестве прокси-сервера для вашего script для извлечения страницы html.

Затем вы можете позвонить своему серверному прокси с помощью URL-адреса, используя Ajax, который вернет вам HTMl этой страницы.