首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSONP脚本回调不起作用

JSONP脚本回调不起作用
EN

Stack Overflow用户
提问于 2014-03-03 03:00:45
回答 1查看 272关注 0票数 1

当我使用纯javascript加载脚本时,我想执行一个回调。我能够正确地加载脚本,但是我的回调没有触发。我听说使用JSONP我可以做这种事情,但是,我不能很好地让它工作。下面是我的代码:

代码语言:javascript
运行
复制
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);
EN

回答 1

Stack Overflow用户

发布于 2014-03-03 03:03:28

JSONP与此无关。您试图加载的URL已经返回了JavaScript,所以您需要做的是将一个加载事件处理程序绑定到元素:

代码语言: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:

代码语言:javascript
运行
复制
{"foo": 42}

它会将其封装在callbackName(...);中,通过一个函数调用创建一个JS脚本:

代码语言:javascript
运行
复制
callbackName({"foo": 42});

实际的函数名取自GET参数callback

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22131937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档