Проблема вызова функции JSONP - PullRequest
0 голосов
/ 08 марта 2012

я настроил веб-сервис, который является междоменным и должен связаться через json с padding в такой простой кодовой строке jquery я успешно возвращаю данные json.

$.getJSON("http://server/series/hist?jsonp=?", function(data){
 console.log(data);
});

веб-служба обернет результат в функцию всякий раз, когда в URL-адресе присутствует "jsonp". для этих случаев я использовал имя функции по умолчанию, например:

myfunction({"a":1})

jquery помогает мне здесь и пытается вызвать функцию, которой нет (myfunction ()). Вместо этого я пытаюсь добиться простого вызова функции обратного вызова (см. выше) для локальной обработки данных.

Вы можете указать мне правильное направление?

спасибо

1 Ответ

3 голосов
/ 08 марта 2012

Я не совсем уверен, в чем ваша проблема на самом деле, но:

Интерпретация 1

Предполагая, что под "локально" вы подразумеваете "без использования обратного вызова":

Это невозможно.JSON-P не может работать синхронно, поскольку это зависит от добавления элемента <script> (который не будет обработан, пока не завершится выполнение текущей функции).

Интерпретация2

Предполагая, что под that isnt existing ("myfunction()") вы подразумеваете «Ваш веб-сервис всегда использует имя функции myfunction:

Исправьте веб-сервис. jsonp=? означает« Произвольно сгенерируйте имя функциии передайте его как параметр jsonp.

Веб-служба должна использовать этот параметр для определения используемого имени функции, а не использовать фиксированное значение, такое как myfunction.

Интерпретация 3

Вы не хотите использовать JSON-P в качестве входных данных, но для непосредственного вызова анонимной функции.

Вы не можете.Он не хранится в любом месте, где вы можете получить к нему доступ.Вы должны переписать свой код, чтобы он не передавался напрямую getJSON:

function myFunction(data){
  console.log(data);
}

$.getJSON("http://server/series/hist?jsonp=?", myfunction); 
myfunction({"a":1})
...