Обновление - междоменный запрос с помощью jQuery (на стороне клиента)
Вчера я просматривал блог Джеймса Падолси, где он опубликовал отличную статью о том, как междоменный запрос с помощью jQuery, также у Криса Хейлманна есть отличная DEMO .
Принцип заключается в использовании YQL -> API Yahoo для запросов веб-страниц, где вы получаете JSON со всеми HTML. Счастливого соскоба:)
Очистить удаленные данные с помощью php, загрузить с помощью jQuery
А как насчет простого AJAX вызова, который бы перехватывал комический элемент и обновлял его содержимым, которое <div id="update-comic" />
в основном использовалось для этой цели?
Также вы будете использовать простую php для получения удаленной страницы, потому что вы не можете совершить ajax-вызов в другом домене
примечание: у пользователя должен быть включен JavaScript, также следующий код использует библиотеку jQuery
Собираем все вместе
на вашей странице, где вы хотите отобразить удаленный комикс, создайте div только для этой цели, давайте назовем его update-comic
<div id="update-comic">
<!-- here comes scraped content -->
</div>
запишите php , назовите его comic-scrape.php
, он загрузит HTML с удаленной страницы, вы должны рассмотреть кэширование ответа и обновлять его через указанный интервал (например, 30 минут, 1 час, ваш звонок .. :))
производительность сервера не должна ухудшаться после простой проверки кэша
<?php
$url = 'http://www.example.com/';
$response = file_get_contents($url);
echo $response;
теперь приходит магия jQuery , где вы делаете вызов ajax на своем php-скребке и берете только интересующий вас элемент. Поместите этот скрипт в вашу страницу просмотра (где у вас есть <div id="update-comic" />
<script type="text/javascript">
$(function () {
// set all your required variables
var
localUrl = '/comic-scrape.php',
elementId = '#remote-comic-id',
elementToUpdate = $('#update-comic');
// update the local elementToUpdate with elementId contents
// from your php in localUrl
elementToUpdate.load(localUrl + ' ' + elementId;
});
</script>
Надеюсь, я все рассмотрел.
Использование simplexml и xpath
Как предложил philfreo в комментарии, жизнеспособное решение может также содержать выбор необходимого идентификатора на стороне сервера. Это очень просто, если использовать php's simplexml и небольшой xpath:
<?php
// set remote url and div id to be found
$elementId = 'remote-comic-id';
$url = 'http://www.example.com/';
// instantiate simple xml element and populate from $url
$xml = new SimpleXMLElement($url, null, true);
// find required div by id
$result = $xml->xpath("//div[id={$elementId}]");
// take first element from array, which is our desired div
$div = array_pop($result);
echo $div;