2016-01-05 6 views
0

Использование IIFE всегда дает мне «callback-function-name» не определена ошибка. С другой стороны, обычная функция загрузки работает нормально. Любые идеи оценили парней ...!Flickr API call IIFE

<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> 
+0

Любые идеи о том, что? Ваша функция 'myfeed' ограничена, поэтому она недоступна в глобальном масштабе. – zerkms

+0

Вы должны выполнить вызов AJAX. –

+2

функция написана неправильно, измените последнюю строку на '})();' –

ответ

0

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); 

}()); 
+0

И неужели jsoncallback НЕОБХОДИМО быть глобальной функцией? –

+0

НУЖНО быть глобальным. Но с этой структурой IIFE она должна сохраняться в области, не зависящей от IIFE. – dYale