我编写了一个 Foo
构造函数,它有一个用于上传 JSONP 的 load
函数。 script.src
有一个回调,但我收到一个错误:Uncaught ReferenceError: bar is not Defined
。我该如何修复它?
function Foo(params) {
function bar(response) {
console.log(response);
}
function load() {
var script = document.createElement('script');
script.src = Config.apiUrl + '&callback=bar';
document.getElementsByTagName('head')[0].appendChild(script);
}
document.getElementById('button').addEventListener('click', load, false);
}
用法:
var foo = new Foo(params);
页面中可以有很多。
最佳答案
假设您的 JSONP 响应是正确的并且如下所示:
bar(/*some argument*/);
问题:bar
必须是全局可访问的,但目前还不是(它仅在 Foo
内可见)
可能的解决方法:
将bar
定义为Foo
的方法,然后就可以执行它(只要实例foo
是全局可访问的) 。在这种情况下,callback
参数必须设置为 foo.bar
:
function Foo(params) { this.bar=function(response) { console.log(response); } this.load=function(){ var script = document.createElement('script'); script.src = Config.apiUrl + '&callback=foo.bar'; document.getElementsByTagName('head')[0].appendChild(script); } document.getElementById('button').addEventListener('click', this.load, false); } //assuming you create the instance in global scope var foo = new Foo(params);
关于javascript - JSONP 回调不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32027732/