Javascript Flickr API调用IIFE
使用IIFE总是给我一个未定义的“回调函数名”错误。另一方面,常规加载函数可以正常工作。有什么想法吗Javascript Flickr API调用IIFE,javascript,flickr,Javascript,Flickr,使用IIFE总是给我一个未定义的“回调函数名”错误。另一方面,常规加载函数可以正常工作。有什么想法吗 <script type="text/javascript"> (function() { function myfeed(feed) { alert(feed); } var tags = 'potatoes'; var script = document.createElement('script'); script.
<script type="text/javascript">
(function() {
function myfeed(feed) {
alert(feed);
}
var tags = 'potatoes';
var script = document.createElement('script');
script.src = 'http://api.flickr.com/services/feeds/photos_public.gne?format=json&jsoncallback=myfeed&tags=' + tags;
document.head.appendChild(script);
}());
</script>
(功能(){
函数myfeed(feed){
警报(feed);
}
var标签='马铃薯';
var script=document.createElement('script');
script.src=http://api.flickr.com/services/feeds/photos_public.gne?format=json&jsoncallback=myfeed&tags=“+标签;
document.head.appendChild(脚本);
}());
jsoncallback=myfeed
将寻找一个全局函数。目前,myfeed
的范围在IIFE内部
如果要使其在全球范围内可用,您需要执行以下操作:
function myfeed(feed) {
alert(feed);
}
(function() {
var tags = 'potatoes';
var script = document.createElement('script');
script.src = 'http://api.flickr.com/services/feeds/photos_public.gne?format=json&jsoncallback=myfeed&tags=' + tags;
document.head.appendChild(script);
}());
有什么想法吗?您的
myfeed
函数的作用域已确定,因此它不是全局可用的。您应该执行AJAX调用。如果函数编写不正确,请将最后一行更改为}()代码>@self编写函数的方式没有问题}())
也是正确的。您建议的方式只允许传入参数。在这种情况下它是不相关的。那么jsoncallback需要是一个全局函数吗?它不需要是全局函数。但在这种IIFE结构中,它需要保持在独立于IIFE的范围内。