Как получить HTML из внешнего содержимого с помощью Jquery?

Я успешно выполнил задачу по отображению внутренней веб-страницы в моем HTML, как показано ниже.

 <!doctype html>
 <html>
   <head>
  <script type="text/javascript" src="jquery-1.4.4.js"></script> 
   </head>
   <body> 
  <div id="target">
   click here to see teste1.html
  </div>
  <div id="result">

  </div>
  <script type="text/javascript">
   $('#target').click(function() {
    $.get('teste1.html', function(data) {
     $('#result').html(data);
     alert('Load was performed.');
    });
   });
  </script>
   </body>
 </html>

Основная цель - получить внешнюю веб-страницу, но это не работает:

 $.get('http://www.google.com/index.html', function(data) {
  $('#result').html(data);
  alert('Load was performed.');
 });

Мне нужно получить HTML-код с внешней веб-страницы, чтобы прочитать теги, а затем вывести в Json.

Некоторые подсказки о том, как этого добиться (загружать внешние веб-страницы с помощью Jquery или делать это с помощью PHP)?


person André    schedule 28.12.2010    source источник
comment
stackoverflow.com/questions/1292486/   -  person andres descalzo    schedule 28.12.2010


Ответы (2)


Это нелегко сделать с помощью Javascript из-за политики единого происхождения.

Если речь идет только об отображении внешней страницы, вы можете загрузить ее в файл <iframe>.

В противном случае, если возможно, используйте серверный язык, такой как PHP, в качестве прокси. Получите данные с помощью Ajax из прокси-скрипта. Позаботьтесь о предотвращении неправильного использования (например, других злоупотреблений сценарием для выполнения произвольных запросов).

person Pekka    schedule 28.12.2010
comment
Спасибо за ответ! Я сделаю это с помощью PHP. С уважением. - person André; 28.12.2010
comment
Разве это не такая же политика происхождения? - person RobertPitt; 28.12.2010
comment
@ Роберт, да, изменился. Это Single в каком-то другом контексте (MSDN?), Я продолжаю их путать - person Pekka; 28.12.2010

Если вы не можете сделать это напрямую из JavaScript, вам придется написать серверный скрипт в качестве прокси, вот вам пример:

<?php
$url = urldecode($_GET['url']);
$handle = fopen(url,'r');
while (!feof($handle))
{
   $str = fgets($handle, 4096);
   echo $str;
}
fclose($handle);
?>

Вы можете отправить AJAX-запрос к этому скрипту из JavaScript вместе с URL-адресом сайта, который вы хотите получить, не забудьте закодировать URL-адрес перед отправкой.

person Amjad Masad    schedule 28.12.2010