【问题标题】:JSONP Script Callback Not WorkingJSONP 脚本回调不起作用
【发布时间】:2014-04-03 15:01:27
【问题描述】:

我想在使用纯 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);

【问题讨论】:

    标签: javascript dom callback jsonp


    【解决方案1】:

    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。

    【讨论】:

      猜你喜欢
      • 2012-10-09
      • 1970-01-01
      • 2014-08-14
      • 2020-09-26
      • 2016-11-11
      • 2016-07-02
      • 2011-12-02
      • 2013-09-24
      • 2017-10-20
      相关资源
      最近更新 更多