На стороне сервера все, что вам нужно настроить, - это веб-ресурс (например, страница), который принимает запрос GET
и возвращает данные, используя соглашение JSON-P, а именно:
callback({"data": "here"});
... где имя функции (в этом примере «обратный вызов») обычно берется из одного из параметров строки запроса (условно, параметр «обратный вызов»), а данные JSON текст (хотя технически это может быть все, что допустимо в объекте JavaScript в буквальном смысле слова, соглашение с JSON-P заключается в том, чтобы ограничивать себя тем, что действительно в JSON).Например, предположим, что запрос выглядел следующим образом:
http://example.com/foo.php?callback=bar
, который вызывает страницу foo.php
(не обязательно должен быть PHP, может быть любой динамический сервер-сторона системы), сообщая, что функция, которую мы хотим вызвать, называется «bar».Наш ответ будет следующим:
bar({"data": "here"});
На стороне клиента вы должны динамически добавить элемент script
на страницу, а также добавить функцию обратного вызова, которая будет вызвана ответом JSON-P.Обычно вы хотите присвоить этой функции какое-то случайное имя и удалить его, когда закончите.
Вот полный пример в качестве ответа на другой вопрос здесь о переполнении стека.Возможно, вам придется немного адаптировать его для использования в дополнении Firefox, но концепции те же.