Загрузить сайт в DIV - PullRequest
       33

Загрузить сайт в DIV

4 голосов
/ 06 августа 2009

как мне на самом деле получить данные с веб-сайта, когда я пишу URL-адрес в текстовое поле, а затем нажимаю кнопку отправки. Я хочу, чтобы данные были помещены в div, который у меня есть. Возможно ли это?

Я пытался с этим, но это не работает!

<script type="text/javascript"> 
function contentDisp()
{
var url = $("#text").val();
$("#contentArea").load(url);
}
</script> 



<textarea id="text">Write URL here</textarea>
<br />
<input type="button" value="Click" onClick="contentDisp();">

<div id="contentArea"></div>

Ответы [ 5 ]

11 голосов
/ 06 августа 2009

Из-за изолированной среды на вызовах javascript вы не можете этого сделать (вы не можете звонить за пределы домена, из которого был загружен JS), по крайней мере, не напрямую

Есть 2 способа.

Первое - это загрузить запрошенный URL в iframe, а не в div, установив параметр src с помощью JS. Просто, легко, но ограничит ваш доступ к данным в iframe.

Вторым было бы сделать запрос AJAX на вашем сервере, а затем сервер ищет URL-адрес и возвращает содержимое HTML (довольно легко сделать с помощью CURL или аналогичного). Это позволяет вам немного поиграть с возвращенным контентом, но опять же из-за песочницы на куки-файлах вы не сможете запрашивать что-либо, например, страницу пользователя на Facebook или что-либо, требующее сеанса, так как оно будет работать через сеанс сервера. а не сеанс браузера.

7 голосов
/ 06 августа 2009

Учитывая, что он не сможет выполнять вход в систему или аутентификацию http (для включения возможности использования curl или другого http-клиента), этот php one liner можно использовать как прокси для загрузки контента с других сайтов

/* proxy.php */
<?php echo file_get_contents($_GET['url']);?>

чем, при условии, что вы поместите proxy.php в тот же каталог html-страницы:

$("#contentArea").load('proxy.php?url=http://example.com');
1 голос
/ 06 августа 2009

URL находится в том же домене, что и сама страница? Из соображений безопасности большинство браузеров не разрешают межсайтовые запросы AJAX. Для получения дополнительной информации о причинах см. текст ссылки

0 голосов
/ 14 августа 2014

1. создайте файл load.php на вашем сервере.

<?php echo file_get_contents($_GET['u']); ?>

2.in index.html .

<script type="text/javascript"> 
function contentDisp()
{
  var url = $("#text").val();
  $("#contentArea").load('load.php?u='+url);
}
</script> 
0 голосов
/ 09 июля 2010

Правильно, браузеры не разрешают AJAX-запрос к сайтам других доменов, у меня была такая же проблема, и я сделал совет workmad3, примерно так:

$(document).ready(function(){
     $('#url').change(function(){
          var _url=$(this).val();
          $('#webDisplay').attr('src',_url);
     });
});

где мой идентификатор URL является текстом INPUT, очень хороший трюк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...