2014-02-19 66 views
1

請參閱下面的示例。如何從加載的文件中調用我的函數?jQuery - 使用ajax加載的文件中的函數調用

這裏是我的外部文件,加載使用Ajax:

// some-file-name.js 
var api = { 
    method1: function() { 
     // doStuff here 
    } 
} 

這裏我加載該文件,並希望調用來自新方法的一些功能提供:

// load script and do stuff with it when done 
$.when(
    $.getScript("some-file-name.js"), 
    $.Deferred(function(deferred) { 
     $(deferred.resolve); 
})).done(function() { 
    // how to call api.method1() when api.method1() gives me undefined? 

}); 

任何建議非常讚賞。

+0

這是一個[常見問題](https://www.google.nl/search?q=load+jsfile+with+ajax)的[jQuery的 – mplungjan

+0

可能重複:你如何從同步加載腳本另一個目錄通過ajax調用?](http://stackoverflow.com/questions/4539740/jquery-how-do-you-synchronously-load-a-script-from-another-directory-via-an-aja) – mplungjan

+0

@mplungjan - 我可以加載腳本,但是如何調用它的方法? – Iladarsda

回答

0
// 1. $.getScript returns a Promise, no need for custom deferred 
// 2. access your response. The Promise passes the response to the 
// success handler parameter 

$.when(
    $.get("some-file-name.js"), // 1 
).done(
    function(api) { // 2 
     console.log(api.method1); 
    } 
}); 
+1

-1中點擊常見問題解答:a)自定義延遲被用於等待DOM準備好,沒有其他b)如上所述,回調不起作用。該腳本可能尚未執行。 – Bergi

+0

你似乎不知道JavaScript是如何工作的 –

+1

哦,我有一個非常好的主意。我甚至可以閱讀[文檔](http://api.jquery.com/jQuery.getScript/):「*一旦腳本加載但未必執行,則會觸發回調*」如果您知道更多,請告訴我們。 – Bergi