Всем известно как получить данные и выполнить функцию с помощью AJAX, но эта технология не позволяет обращаться к стороннему домену из-за политики ограничения домена, что может оказаться очень кстати, когда мы организовываем обмен данных между двумя веб-приложениями, расположенные на разных доменах.
Если загрузить код JavaScript на страницу, то он тут же выполнится — воспользовавшись этой особенностью можно организавать вызов функции с данными полученными из удаленного сервера.
Следующий код демонстрирует реализацию JSONP:
1 2 3 4 5 |
function scriptRequest(url) { var script = document.createElement('script'); script.src = url; document.getElementsByTagName('head')[0].appendChild(script); } |
Необходимо реализовать функцию обработки вызова scriptRequest. Например:
1 2 3 4 5 6 |
function sayHello(data) { alert('Hello, ' + data.name); } // call sayHello function scriptRequest('http://pektop.net/demo/action.php?callback=sayHello'); |
На стороне сервера в файле action.php следующее:
1 2 3 4 5 |
<?php $data = array("name" => "PEKTOP"); header("Content-type:application/json"); echo $_GET["callback"] . "(" . json_encode($data) . ")"; ?> |
Вот и весь фокус 🙂 я подготовил демо.