Jsonp как сделать запрос?


#1

Помогите пожалуйста разобраться с jsonp в jquery


#2

Вопрос слишком пространный чтобы дать на него ответ.

Знаешь ли ты принцип работы jsonp?
Есть ли у тебя сервер который дает jsonp ответы?


#3

Нет не знаю принцип работы и нет сервера


#4

Как сделать сервер который отдаёт jsonp ответы


#5

Клиент объявляет функцию processJSONP на глобальном уровне, внутри прописывает как обрабатывать данные переданные ей в аргументы.
Запрос от клиента выглядит как вставка на страницу скрипта .
Сервак получает зарпос, параметры, генерирует текст скрипта типа processJSONP("{data:[1,2,3]}"), этот текст загружается браузером, функция processJSONP выполняется с данными что сервер нагенерировал.


#6

Но нужен http сервер, генерирующий тело скрипта и отдающий ответ с заголовком как для javascript. Это прямо нетривиальная задача если решать ее для продакшена.

Если тебе поиграться с jsonp, то лучше возьми какой-нить api (например у yandex https://tech.yandex.com/translate/doc/dg/reference/translate-docpage/#JSON)


#7

А как запросить
что-то у чужого сервера на jsonp


#8

Можете пожалуйста показания пример использования jsonp


#9

jsonp был придуман как раз чтобы запрашивать данные с других серверов без необходиости решать проблемы https://en.wikipedia.org/wiki/Same-origin_policy.

Нужно указать полный путь к серверу в scr вставляемого скрипта.


#10

А в этом теге script надо писать запрос?


#11

Вот, например, я взял свой API ключ (не используй его для своих задач), прочитал какие параметры принимает yandex api, составил урл для перевода слова “Шедевр” с русского на английский. Имя коллбек функции processJSONP, имя не имеет значение, главное чтобы у тебя в клиенте была функция, которая называется как значение параметра callback.

https://translate.yandex.net/api/v1.5/tr.json/translate?key=trnsl.1.1.20130512T104455Z.8a0ed400b0d249ba.48af47e72f40c8991e4185556b825273d104af68&text=Шедевр&callback=processJSONP&lang=ru-en

Сервер генерирует код вида

/**/ 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> на страницу.


#12

А в processJSONP просто писать jsonp запрос?


#13

А как узнать что сервер может дать ответ ?


#14

Нет, в ней ты описываешь что делаешь с данными от сервера.

Запрос выглядит как формирование строки и вставка скрипта на страницу. Некоторые библиотеки упрощают этот процесс, например jquery: https://learn.jquery.com/ajax/working-with-jsonp/


#15

Читать документацию.


#16

А где можно посмотреть документацию


#17

Я кинул пример ссылку на документацию к апи яндекса.

Если ты работаешь не с api а с сервером приложения, то понять что он отдает можно прочитав исходный код, поговорив с автором или прочитав его ТЗ или документацию (последняя чаще отсутствует).


#18

Сервер может отправить абсолютно рандомные данные


#19

Звучит странно. Рандомные - в плане формата, структуры?


#20

Вы можете показать фото функции processJSONP?