Сначала установите букмарклет со ссылкой, которую вы можете перетащить на панель закладок:
<html>
<head></head>
<body>
<a href="javascript:(function(src, cb){var s = document.createElement('script');s.charset = 'UTF-8';document.body.insertBefore(s, document.body.firstChild);s.src = src;if(typeof cb === 'function'){s.onload = cb;s.onreadystatechange = function(){(/loaded|complete/).test(s.readyState)&&cb(s);};}return s;}('http://github.com/pure/pure/raw/master/libs/pure.js', function(e){alert('loaded');}))">load</a>
</body>
</html>
Замените URL вашим скриптом, он будет загружен и запущен на странице хоста.
Однако теперь он находится на размещенной странице и не может вызвать ваш сервер с XMLHTTPRequest
, так как домены не совпадают.
Вот идет JSONP.
В загруженном скрипте вы можете поместить функцию, например: function srvCallback(json){...}
Когда вы хотите вызвать свой сервер, вы добавите его в виде скрипта, используя функцию, аналогичную приведенной выше в букмарклете:
function jsonp(src){
var s = document.createElement('script');
old = document.getElementById('srvCall');
old && document.body.removeChild(old);
s.charset = 'UTF-8';
s.id = 'srvCall';
document.body.insertBefore(s, document.body.firstChild);
s.src = src + '?' + new Date().getTime();
}
Введите ваш запрос, например:
jsonp('http://domain.com/controller/method/word')
Сервер должен ответить примерно так:
srvCallback({word:'hello'});
И, наконец, автоматически вызывается функция srvCallback
, внутри функции вы получаете свой JSON и показывает результат пользователю.