Использование jQuery.getScript
оказалось близко - но не совсем - к ответу. Использование getScript устраняет необходимость в jQuery для добавления динамически именованной анонимной функции к параметрам запроса (хотя это все равно будет сделано, если вы передадите ей анонимную функцию, как в приведенном выше коде). Однако по умолчанию в jQuery.getScript
, как и во всех других вызовах в библиотеке Ajax jQuery, добавляется еще один дополнительный аргумент _=12344567
(где 1234567 - это действительно отметка времени). jQuery делает это, чтобы браузер не кэшировал ответ. Тем не менее, это дополнительное препятствует моему подписанию запроса, как и функция с автоматическим именем обратного вызова.
С некоторой помощью по #jquery я узнал, что единственный способ заставить jQuery вообще не связываться с вашими параметрами - это сделать запрос, используя базовый метод jQuery.Ajax
со следующими аргументами:
jQuery.ajax({
url: fbookUrl,
dataType: "script",
type: "GET",
cache: true,
callback: null,
data: null
});
(где fbookUrl
- URL-адрес API Facebook, который я пытаюсь запросить с полными параметрами, включая подпись и callback=myFunction
). Аргумент dataType: "script"
указывает, что полученный JSONP должен быть вставлен в тег сценария на странице для выполнения, cache: true
указывает jQuery разрешить браузеру кэшировать ответ, то есть пропустить добавление параметра метки времени.