2009-07-17 3 views
1

Мне было интересно, как загрузить HTML, который размещен в другом домене?js: Загрузить html страницы из другого домена

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

Я прибегая к помощи в течение нескольких часов напрасно ...

ответ

3

JavaScript не разрешается делать кросс-доменных запросов. Это большой риск для безопасности. Вместо этого вам нужно будет выполнить скрипт на сервере и вернуть его в вашу функцию JavaScript.

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

JavaScript инициирует запрос Ajax на страницу (или скрипт), расположенный на сервере. Он передает все необходимые параметры на эту страницу. Следующий код основан на jQuery (ради краткости), но принципы одинаковы независимо от вашей структуры.

var sParameters = " ... " // this is defined by you 
$.ajax({ 
    url: 'your-server-side-code.php', 
    processData: false, 
    data: sParameters, 
    success: function(sResponse) { 
    // handle the response data however you want 
    } 
}); 

Код на стороне сервера будет отвечать на запрос и передавать необходимые параметры на междоменный веб-сайт. PHP cURL library хорош для этого.

// very contrivuted cURL configuration for purposes of example... 
$curl_connection = curl_init(); 
$str_url = "http://you-url.com"; 
curl_setopt($curl_connection, CURLOPT_URL, $str_url); 
curl_setopt($curl_connection, CURLOPT_GET, 1); 
// ... keep setting your options ... 
$str_response = curl_exec($curl_connection); 
curl_close($curl_connection); 

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

print_r($str_response); 

Функция обработчика ответа JavaScript может затем анализировать входящие данные ответа. Обратите внимание на функцию успеха в первом блоке кода JavaScript выше.

+0

Обратите внимание, что это боль, когда страница не доступна с сервера. – MSalters

+0

Я боюсь, что у меня нет сервера с завихрением. – 2009-07-17 15:45:06

0

Если у вас нет другой страницы, это будет очень сложно.

Фактически вы не можете сделать запрос в другой домен в javascript. Единственное, что вы можете сделать, это загрузить скрипт из другого домена:

<script type="text/javascript" src="http://otherdomain.com/script.js"></script> 

Если цель это загрузить данные из другого домена, и (как я сказал) у вас есть другой сайт, вы можете создать файл script.js, который загрузит данные, которые вам нужны на вашем исходном сайте.

Помните, что это деликатная вещь, и это нужно делать, только если вы знаете, что будет в скрипте.

0

Вы можете сделать междоменные запросы от localhost, но если вы планируете развернуть этот код на сервере, это не сработает. Поскольку вы разрабатываете букмарклет, я думаю, вы можете это сделать.

Чтобы получить удаленный HTML-код, вам необходимо использовать AJAX.

jQuery библиотека делает эту задачу так просто, как это ...

$.get("http://www.google.com", function(html) { alert(html); }); 
+0

Спасибо, но он работает только в том случае, если я запускаю букмарклет во время посещения google.com – 2009-07-17 16:01:35

Смежные вопросы