[英]How do I assign a function to a global variable?
我正在嘗試將javascript函數的名稱傳遞給全局變量。 我有一個圍繞$ .ajax()構建的通用“ CallMyWebService”函數。 函數的url,動詞,內容類型等是根據全局變量的值設置的。 在調用服務函數之前,立即設置全局變量,並在全局變量重置為空之后。
我的通用“ CallMyWebService”功能在這里:
function CallMyWebService() {
$.ajax(
{
url : varUrl,
type : varHttpVerb,
cache : varCacheBool,
data : varData,
contentType : varContentType,
processdata : varProcessData,
dataType : varDataType,
async : varAsync,
success : varOnSuccess,
error : varOnError,
complete : varOnComplete
}
)
}
我遇到的問題是將函數名稱傳遞給varOnSuccess
, varOnError
和varOnComplete
。 如果我有一個名為SuccessCallback()
的函數,並且希望將服務調用的result
傳遞給SuccessCallback()
,如何將其分配給varOnSuccess
全局變量? 變量分配將在另一個名為SetupServiceCall()
函數中進行。 換句話說,如何在SetupServiceCall()
函數中完成varOnSuccess =
?
我會說:
varOnSuccess = SuccessCallback;
在jQuery文檔中查找SuccessCallback()將接收的參數的詳細信息。
CallMyWebService應該接受這些函數作為參數。 您還應該通過引用而不是字符串名稱來傳遞它們。
不要做一個全局變量。 如果您有任何並行調用,這將失敗。
例:
function CallMyWebService(successCallback, errorCallback) {
$.ajax(
...
success: successCallback,
error: errorCallback
...
);
}
//calling the service
function MySuccessHandler(data) {
alert('success');
}
function MyErrorHandler(data) {
alert('error');
}
CallMyWebService(MySuccessHandler, MyErrorHandler);
您的意思是:
var varOnSuccess = null;
function SetupServiceCall() {
varOnSuccess = SuccessCallback; //note
}
?
您可以在ajax調用中簡單地使用不帶括號的函數名稱,例如:
$.ajax({
...
success: SuccessCallback,
error: ErrorCallback,
...
});
window.varOnSuccess = SuccessCallback
應該管用
但是,我認為將變量部分作為參數傳遞給CallMyWebService會更好:
function CallMyWebService(varSuccess, varError) {
$.ajax({
url : varUrl,
type : varHttpVerb,
cache : varCacheBool,
data : varData,
contentType : varContentType,
processdata : varProcessData,
dataType : varDataType,
async : varAsync,
success : varSuccess,
error : varError,
complete : varOnComplete
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.