Получить HTML URL без XMLHttpRequest - PullRequest
1 голос
/ 05 января 2012

спасибо за чтение. Я пытаюсь придумать функцию Javascript, которая конвертирует исходный HTML-код страницы с внешнего URL-адреса в переменную, чтобы все это стало редактируемым. Сложность в том, что URL-адрес не заканчивается расширением «html, htm, aspx», а вместо этого содержит строку переменных формы ввода (т.е.? Type = AAA & color = BBB ...). Следовательно, метод XMLHttpRequest исключен.

Это вообще возможно в JS / jQuery? Я слышал о той же политике происхождения, но следующему инструменту удается это сделать, хотя в PHP: http://www.iwebtool.com/code_viewer

Ответы [ 2 ]

0 голосов
/ 05 января 2012

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

PHP

<?php
    $url = $_REQUEST['url'];
    $curl_handle=curl_init();
    curl_setopt($curl_handle,CURLOPT_URL,$url);
    curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
    curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
    $buffer = curl_exec($curl_handle);
    curl_close($curl_handle);
    echo($buffer);
?>

jQuery / HTML

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$.ajax({
  type: "POST",
  url: "yourPhpScript.php",
  data: "url=http://stackoverflow.com"
}).done(function( content ) {
  $('#content').html(content);
  //content is your variable containing the source
});
</script>

<div id="content"></div>
0 голосов
/ 05 января 2012

XMLHttpRequest работает с любым действительным URL-адресом, просто дайте ему соответствующий URL-адрес, и вы можете получить ответ в виде текста.

Однако есть ограничение политики одного и того же происхождения .Существуют различные обходные пути для этого в разных ситуациях, но если вы хотите иметь возможность манипулировать полученным текстом, то на самом деле есть только один вариант.Используйте тот же javascript, который вы используете в настоящее время, просто добавьте его в качестве первой строки getUrl:

url='/path/to/proxy.php?url='+encodeURIComponent(url);

Затем на своем сервере (тот же, который обслуживает страницу и ее javascript) напишите proxy.php:

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

Это приведет к тому, что все ваши запросы ajax будут отправляться на ваш сервер, который не имеет ограничения загрузки только из одного домена.Сервер загрузит запрошенный вами URL и ответит вам ответом, полученным со страницы, которую он загрузил.Обратите внимание, что приведенный выше скрипт даст вам только тело контента (то, что вы видите при просмотре исходного кода) - если вам нужен доступ к заголовкам HTTP, вы также можете ретранслировать их, это будет просто сложнее.

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