requireJS にロードする JSONP ファイルを取得しようとしています。ドキュメントによると、次のように動作するはずです。
require(["http://example.com/api/data.json?callback=define"],
function (data) {
//The data object will be the API response for the
//JSONP data call.
console.log(data);
}
);
私のconfig.jsonは次のようになります(改行なし):
config({
"default_language":"de-DE",
"language_current":"de-DE",
"language_selector":"translate",
"language_set":"false"
});
したがって、私のrequire呼び出しは次のようになります。
require(["http://example.com/api/config.json?config=define"],
function (data) {
//The data object will be the API response for the
//JSONP data call.
console.log(data);
}
);
しかし、そうするだけで戻りますconfig (the callback function!) is undefined
。私はしばらくこれに座っていました...async
プラグインを使用してこのように機能させましたが、定義コンテキストの外で関数を宣言しているため、この構文は機能しません。
var config = function(data) {
var settings = {};
// create application settings
settings.language_default = data.default_language || "en-EN";
settings.language_current = data.language_current || priv.settings.language_default;
settings.language_selector = data.selector || "translate";
settings.language_set = data.language_set || false;
console.log(settings);
// return response object
return settings;
};
define([
'async!http://example.com/api/config.json!config'
],
config
);
コールバック関数に具体的に名前を付けたので、これは機能しているようconfig
です。
config
関数の名前として渡すことができれば、すべて問題ないと思いますが、define-callback
それを行うことができた唯一の方法は上記です。
質問:
requireJS によるデフォルトの方法またはこちらのローダー プラグイン プロバイダーを使用して、requireJS に JSONP ファイルを正しくロードするにはどうすればよいですか [ https://github.com/millermedeiros/requirejs-plugins/blob/master/examples/async.html ] ?
これは、S3 からロードされた静的ファイルで完全に正常に機能します。
define([],
function () {
$.ajax({
url: "http://www.example.com/api/configuration.json",
dataType: "jsonp",
jsonpCallback: "config", /* Unique function name */
success: function(data){
/* Do something with data */
console.log(data)
}
});
}
);
では、requireJS 内で実行すると機能しないのはなぜですか?