我想在使用纯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);
答案 0 :(得分:1)
JSONP与此无关。您尝试加载已经的网址会返回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
。