Должна ли функция обратного вызова JSON-P принимать строку? - PullRequest
3 голосов
/ 09 декабря 2011

Я звоню в REST API, который кто-то создал. Он поддерживает JSONP для облегчения междоменного доступа.

Ответ, который я получаю от службы, выглядит следующим образом:

mycallback('{"token": "123456789"}');

Обратите внимание на одинарные кавычки, заключающие данные JSON; Передавая его как строку, а не как необработанный объект. JQuery может справиться с этим, но другие библиотеки, похоже, ожидают необработанный объект.

mycallback({"token": "123456789"});

Параметр необработанного объекта имеет для меня больше смысла, так как он устраняет необходимость разбора данных JSON, но я хочу знать наверняка, прежде чем просить разработчика API внести корректировку:

Что наиболее правильно?

Ответы [ 2 ]

3 голосов
/ 10 декабря 2011

Передача литерала javascript (секунды) в виде , показанного здесь , является более корректной, поскольку позволяет избежать десериализации строки обратно в объект javascript.

0 голосов
/ 10 декабря 2011

Передача строки, очевидно, плохая вещь - у вас есть два варианта (предпочтительнее # 1):

  1. Попросите разработчика службы JSONP отправить правильный JSONp вместо строки
  2. Сделайте вашу функцию обратного вызова умной, чтобы она использовала что-то вроде payload = JSON.parse(payload); в случае, если payload является строкой.
...