当我使用纯javascript加载脚本时,我想执行一个回调。我能够正确地加载脚本,但是我的回调没有触发。我听说使用JSONP我可以做这种事情,但是,我不能很好地让它工作。下面是我的代码:
function foo(){
alert('got the data');
}
var el = document.createElement("script");
el.setAttribute("src", "//ajax.googleapis.com/ajax/libs/webfont/1.5.0/webfont.js?callback=foo");
document.body.appendChild(el);
发布于 2014-03-03 03:03:28
JSONP与此无关。您试图加载的URL已经返回了JavaScript,所以您需要做的是将一个加载事件处理程序绑定到元素:
var el = document.createElement("script");
el.setAttribute("src", "//ajax.googleapis.com/ajax/libs/webfont/1.5.0/webfont.js");
el.onload = function() {
// script loaded
};
document.body.appendChild(el);
另请参阅How do I include a JavaScript file in another JavaScript file?
当您想要从外部域加载数据时,可以使用JSONP作为Ajax的替代方案,但这是服务器必须支持的。如果服务器支持它,则不返回(例如)简单的JSON:
{"foo": 42}
它会将其封装在callbackName(...);
中,通过一个函数调用创建一个JS脚本:
callbackName({"foo": 42});
实际的函数名取自GET参数callback
。
https://stackoverflow.com/questions/22131937
复制相似问题