Я обслуживаю свой файл JSONP JavaScript на статическом файловом сервере - GitHub Pages.
Это означает, что я не могу динамически установить имя функции обратного вызова JSONP на сервере ...
header('Content-Type: text/javascript; charset=utf8');
$data = '{ "foo":"bar" }'; // json string
echo $_GET['callback'] .'('.$data.');'; // function name set via ?callback=xyz
jQuery.ajax () имеет параметр jsonpCallback
для определения имени статической функции обратного вызова. Итак, я могу серверить файл javascript, например. test-jsonp.js
со следующим содержанием:
Статический пример - файл JavaScript
jsonpCallbackABC({ "foo":"bar" });
Однако документация jQuery предполагает, что статический менее желателен.
http://api.jquery.com/jQuery.ajax/
jsonpCallback
Укажите имя функции обратного вызова для запроса JSONP. Это значение будет использоваться вместо случайного имени, автоматически сгенерированного jQuery. Желательно, чтобы jQuery генерировал уникальное имя, так как это упростит управление запросами и обеспечит обратные вызовы и обработку ошибок. Вы можете указать обратный вызов, если хотите улучшить кеширование браузером запросов GET.
Может ли кто-нибудь более подробно рассказать о подводных камнях статических имен функций JSONP?