簡體   English   中英

如何在 $.ajax 調用中使用變量調用成功函數

[英]How to call a success function with a variable in $.ajax call

在 Javascript 中,我將如何使這樣的工作:

 function callAjax (url, successCallback, errorCallback) { var ajaxProps = { url: url, success: successCallback, error: errorCallback } return $.ajax(ajaxProps); }

無論我如何嘗試,我都會收到錯誤或未定義的錯誤。 我試圖慢慢地從一個上帝的對象中解脫出來。 所以通常 ajax 調用將是 parent.specificSuccess,因為它來自該對象內。 我也試過使用 GodObject[successCallback] 和 global[namespace].godObject[successCallback]。 我還嘗試了所有三種變體:

 function callAjax (url, successCallback, errorCallback) { var ajaxProps = { url: url, success: function (response) { successCallback(response); }, error: function (response) { errorCallback(response); } } return $.ajax(ajaxProps); }

它是從 God 對象內部調用的:

 callAjax('https://url.com', specificSuccess, specificError);

我已經嘗試了上面列出的所有三個選項,並在它前面使用了“父”。

我知道我一定遺漏了一些東西,我以前從未遇到過被要求做這樣的事情的實例。 似乎我應該能夠使用帶有方法名稱的變量在回調中調用一個方法……但是谷歌在這方面讓我失望了。

我有一個例子。 它非常適合我。 您可以將此代碼保存為 .js 文件並在您的網頁中引用。 你像這樣調用ajax方法:backend.ajax.AjaxPOST()傳遞參數。 可選地,您可以有一個加載。

backend.ajax = {

AjaxPOST: function (url, data, dataType, callBackSucess, callBackError, loadig) {
    $.ajax({
        type: "POST",
        url: url,
        data: data,
        dataType: dataType,
        success: function (e) {
            if (callBackSucess != null)
                callBackSucess(e);
        },
        beforeSend: function (e) {
            if (loadig == true)
                startLoadingAjax();
        },
        complete: function (e) {
            if (loadig == true)
                endLoadingAjax();
        }
    });
},

AjaxGET: function (url, dataType, callBackSucess, callBackError, loadig) {
    $.ajax({
        type: "GET",
        url: url,
        dataType: dataType,
        success: function (e) {
            if (callBackSucess != null)
                callBackSucess(e);
        },
        error: function (e) {
            if (callBackError != null)
                callBackError(e);
        },
        beforeSend: function (e) {
            if (loadig == true)
                startLoadingAjax();
        },
        complete: function (e) {
            if (loadig == true)
                endLoadingAjax();
        }
    });
}};


var divLoading = "<div id=\"Loading\" style=\"display: none; position: fixed; z-index: 1000; top: 0;left: 0; height: 100%;width: 100%;background: rgba( 255, 255, 255, .8 ) url('http://i.stack.imgur.com/FhHRx.gif') 50% 50% no-repeat;display:block;\"></div>";

function startLoadingAjax() {
$("body").append(divLoading);}

function endLoadingAjax() {
$("#Loading").remove();}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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