Я передаю свой файл JSONP JavaScript на статический файловый сервер - GitHub Pages.
Это означает, что я не могу динамически установить имя функции обратного вызова JSONP на сервере ...
Динамический пример - PHP
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 предполагает, что static является менее желательным.
http://api.jquery.com/jQuery.ajax/
jsonpCallback
Укажите имя функции обратного вызова для JSONPзапрос.Это значение будет использоваться вместо случайного имени, автоматически сгенерированного jQuery.Желательно, чтобы jQuery генерировал уникальное имя, так как это облегчит управление запросами и обратные вызовы и обработку ошибок.Возможно, вы захотите указать обратный вызов, если хотите улучшить кэширование GET-запросов в браузере.
Может кто-нибудь подробнее расскажет о подводных камнях имен статических функций JSONP?