Получить 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);
});
Изменить: это работает только в том случае, если ваша страница находится в одном домене.
Ответ 3
На нем простейшая форма - Вы не можете.
Вы связаны с той же политикой происхождения.
Ответ 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 этой страницы.