未针对Ajax调用定义回调

时间:2018-08-06 19:16:59

标签: javascript jquery ajax jsp

我遇到了一些ajax调用之一的怪异问题。只有一个ajax调用不起作用,这就是我设置代码的方式:

  1. 我有ajax核心调用和要在ajax函数上调用的单个端点函数。

    function makeAjaxCall(_url, methodType, _data) {
    var promiseObj = new Promise(function (resolve, reject) 
    {
    
    if (_data == null) {
        $.ajax({
            type: methodType,
            url: _url,
            success: function (json) {
                console.log("success - " + _url + " - " + JSON.stringify(json))
    
                try {
                    resolve(json);
                } catch (e) {
                    console.log(e);
                }
    
            },
            error: function (xhr, status, error) {
                console.log("error - " + _url + " - " + xhr.responseText);
                reject(xhr.responseText);
            }
    
        });
    } else {
        $.ajax({
            type: methodType,
            url: _url,
            data: _data,
            success: function (json) {
                resolve(json);
            },
            error: function (xhr, status, error) {
                reject(error);
            }
        });
    }
    }); 
    return promiseObj;
    }
    

端点调用上面的ajax函数的函数

function getDataCodeApiCall(arg_one, resolved, rejected) {
try {

    var endpoint = "/endpoint";
    if (arg_one != null) {
        url = api + endpoint + "?arg=" + arg_one;
    } else {
        url = api + endpoint;
    }
    makeAjaxCall(url, "GET", null).then(resolved, rejected);

} catch (e) {

    console.error(e);
    return "";

}
}

现在在其他javascript文件中,这是对终结点函数的主要调用,以调用主要ajax调用。这用于分配回调和发起呼叫。我还应该说api var只是基本url字符串。

getDataApiCall(null, getDataSuccess, getDataError);

成功回调函数为:

    function getDataSuccess(info) {
    try {


        $.each(info, function (value, key) {
            $('#dropdown').append($("<option />").text(key.id + " " + key.type).attr("id", key.id));
        });
    }catch(e){
        alert(e);
    }
}

,错误回调为:

function getDataError(info){
    //error code
    alert(info);
}

令人费解的是,当我添加调试器时,mainAjaxCall中的两个回调都是未定义的。问题是我还有4种方法在不同的端点上执行相同的操作。感谢您的进步!

编辑:api调用的返回也是:

[
    {
       "id":0,
       "type":"string"
    }
]

0 个答案:

没有答案