2014-03-02 44 views
1

我想在使用純JavaScript加載腳本後執行回調。我能夠正確加載腳本,但我的回調沒有觸發。我聽說使用JSONP我可以做這種類型的東西,但是,我不能完全使它工作。這裏是我的代碼: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); 

回答

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