В этом уроке рассмотрим возможность передачи-приема данных между доменами. Создание сайтов Винница - будет полезно как для начинающих девелоперов, так и для профи.
Для начала несколько слов. Последние версии jQuery имеют уже встроенный cross-domain механизм приема-передачи данных, но его использование в ряде случаев не возможно. Например, есть задача создать новостной информер. Если будем использовать jQuery - сайт клиента, что подгрузит наш код, может поломаться, ввиду использования разных версий jQuery, разной их имплементации, или еще чего-то. Поэтому нужно создать что-то простое и универсально работающее во всех браузерах.
В нете нашел 6 способов сделать это. Из них рабочими реально для нашей задачи оказались 2 (это использование iframe и метод html5-запроса). Из них кроссбраузерными оказался 1. iframe не подошел, поскольку на клиентском сервере нужно было размещать html-файл, что будет служить проксей, а это мало кто захочет из клиентистов делать.
Не знаю, может я плохо искал, но больше идей не было :)
В поисках решения мне пришла в голову мысль использовать php на стороне моего сервера в качестве javascript.
То есть, на стороне клиента будет код:
<p><!--domain.ua Informer start --></p> <div id="data_content"></div> <p><br /> <script type="text/javascript" src="http://domain.ua/test.php?div_id=data_content">// <![CDATA[ <br /> // ]]></script> <br /><!--domain.ua Informer end --></p>
На стороне сервера код будет содержаться в php-файле.
<p><?php <br ?> $div_el=$_GET['div_id'];<br />header("Content-type: text/javascript; charset=utf-8");<br />$data_from_mysql='HELLO FROM domain.ua server!';<br />$g_user_content=str_replace("\r\n", "", $data_from_mysql);<br />$g_user_content=str_replace("'", "/'", $g_user_content);<br />$g_user_content="document.getElementById('".$div_el."').innerHTML='".$g_user_content."'";<br />echo $g_user_content;<br /><br />?></p>
Основное внимание уделите header в php и замене \r\n и ' на соответствующие значения, тоесть преобразовать html-код в javascript-формат.
Идея достаточно проста. Кроссдоменная политика запрещает множество способов доступа к данным, но всегда была открыта возможность подключать javascript-библиотеки с любых доменов. Этим я и воспользовался в данном примере.
Спасибо за внимание.
И помните, создание сайтов в Виннице - это искусство, не сравнимое с созданием такого же сайта в Киеве :)