我有一個ExtJs應用程序,它載入了相當多的javascript文件。這導致了很多開銷,因此我們現在使用Ajax加載JavaScript文件。如何在腳本的其他部分使用存在於js文件中的函數(使用Ajax加載)?
因此,當用戶使用Ajax點擊一個按鈕,則JavaScript文件攜帶與該按鈕相關聯的功能被裝入以下方式:
Ext.Ajax.request({
url:'filePath',
success:function(response){
eval(response.responseText);
functionAssociatedWithButton();//Calling here the function associated with button
},
failure:function(){
return;
}
});
functionAssociatedWithButton();//Calling here the same function throws an error of function being undefined
的問題是,此功能 - functionAssociatedWithButton() - ,其存在於使用Ajax加載的JS文件中,並且僅在Ajax請求的成功功能中執行。
但是,如果我們嘗試在腳本的任何其他部分訪問這個功能,那麼JS引擎引發錯誤 - functionAssociatedWithButton()沒有定義。
怎麼會這樣的功能,這是目前在使用Ajax加載JS文件,可以在腳本的其餘部分可用?
我嘗試使用第四選項suggested here - 但這也沒有解決問題。
任何人都可以請扔在這一些輕。
在此先感謝。
PS:完整的腳本的ExtJS的onReady函數裏面寫。另外,考慮到Ajax可能沒有被時間函數加載的可能性在其他地方被調用,我已經通過在Ajax完成加載(使用isLoading()和setTimeOut())後調用該函數來嘗試這種情況,但即使Ajax已經完成加載後,該功能只能在Ajax的成功功能中識別,而不能在腳本的其他任何地方識別。
感謝傑克建議對全局命名空間。你的建議和這裏的討論 - http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string - 做的伎倆。乾杯。 – netemp