簡體   English   中英

如何為全局變量分配功能?

[英]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
        }
    )

}

我遇到的問題是將函數名稱傳遞給varOnSuccessvarOnErrorvarOnComplete 如果我有一個名為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM