Помогите пожалуйста разобраться с jsonp в jquery
Вопрос слишком пространный чтобы дать на него ответ.
Знаешь ли ты принцип работы jsonp?
Есть ли у тебя сервер который дает jsonp ответы?
Нет не знаю принцип работы и нет сервера
Как сделать сервер который отдаёт jsonp ответы
Клиент объявляет функцию processJSONP
на глобальном уровне, внутри прописывает как обрабатывать данные переданные ей в аргументы.
Запрос от клиента выглядит как вставка на страницу скрипта .
Сервак получает зарпос, параметры, генерирует текст скрипта типа processJSONP("{data:[1,2,3]}")
, этот текст загружается браузером, функция processJSONP
выполняется с данными что сервер нагенерировал.
Но нужен http сервер, генерирующий тело скрипта и отдающий ответ с заголовком как для javascript. Это прямо нетривиальная задача если решать ее для продакшена.
Если тебе поиграться с jsonp, то лучше возьми какой-нить api (например у yandex Translating a text | Yandex Translate API)
А как запросить
что-то у чужого сервера на jsonp
Можете пожалуйста показания пример использования jsonp
jsonp был придуман как раз чтобы запрашивать данные с других серверов без необходиости решать проблемы https://en.wikipedia.org/wiki/Same-origin_policy.
Нужно указать полный путь к серверу в scr
вставляемого скрипта.
А в этом теге script надо писать запрос?
Вот, например, я взял свой API ключ (не используй его для своих задач), прочитал какие параметры принимает yandex api, составил урл для перевода слова “Шедевр” с русского на английский. Имя коллбек функции processJSONP
, имя не имеет значение, главное чтобы у тебя в клиенте была функция, которая называется как значение параметра callback
.
Сервер генерирует код вида
/**/ processJSONP({"code":200,"lang":"ru-en","text":["Masterpiece"]})
А вызов с клиента будет выглядеть как вставка <script src="https://translate.yandex.net/api/v1.5/tr.json/translate?key=trnsl.1.1.20130512T104455Z.8a0ed400b0d249ba.48af47e72f40c8991e4185556b825273d104af68&text=Шедевр&callback=processJSONP&lang=ru-en"></script>
на страницу.
А в processJSONP просто писать jsonp запрос?
А как узнать что сервер может дать ответ ?
Нет, в ней ты описываешь что делаешь с данными от сервера.
Запрос выглядит как формирование строки и вставка скрипта на страницу. Некоторые библиотеки упрощают этот процесс, например jquery: https://learn.jquery.com/ajax/working-with-jsonp/
Читать документацию.
А где можно посмотреть документацию
Я кинул пример ссылку на документацию к апи яндекса.
Если ты работаешь не с api а с сервером приложения, то понять что он отдает можно прочитав исходный код, поговорив с автором или прочитав его ТЗ или документацию (последняя чаще отсутствует).
Сервер может отправить абсолютно рандомные данные
Звучит странно. Рандомные - в плане формата, структуры?
Вы можете показать фото функции processJSONP?