我正在尝试获取一个 JSONP 文件以在 requireJS 中加载。 docs说它应该像这样工作:
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(回调函数!)未定义
。我已经坐了一段时间了......并使用 async
plugin 让它像这样工作, 但这种语法不起作用,因为我在定义上下文之外声明了一个函数。
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 内部完成时它不起作用?
最佳答案
你错过了一件事:
http://requirejs.org/docs/api.html#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);
}
);
回调
是包裹在jsonp
中的对象:
如果您的回调
是define,那么使用define
define({
"default_language":"de-DE",
"language_current":"de-DE",
"language_selector":"translate",
"language_set":"false"
});
关于javascript - 如何在 requireJS 中加载 JSONP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17701904/