Javascript JQuery'的包装器;s的ajax函数。已触发回调,但没有参数

Javascript JQuery'的包装器;s的ajax函数。已触发回调,但没有参数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我对JavaScript非常陌生,所以这个问题可能是虚构的。 我在代码中执行了很多GET和POST请求,所以我决定编写包装器函数来调用jQuery的ajax函数 /** * Makes Get request * @param url URL * @param successCallback function triggered when request is successfully proceeded * @param failCallback function triggered

我对JavaScript非常陌生,所以这个问题可能是虚构的。 我在代码中执行了很多GET和POST请求,所以我决定编写包装器函数来调用jQuery的ajax函数

/**
 * Makes Get request
 * @param url URL
 * @param successCallback function triggered when request is successfully proceeded
 * @param failCallback  function triggered is case of failed request
 */
function getRequest(url,successCallback,failCallback){
    $.ajax({
        url: url,
        timeout: 3000,
        dataType: "json",
        success: function(data,textStatus,jqXHR){
            successCallback(data,textStatus,jqXHR);
        },
        error: failCallback(jqXHR,textStatus,errorThrown)
    });
}
我这样称呼它:

url = "/api/info";
function onSuccess(data,textStatus,jqXHR){
        $("#result").html("Hostname is "+data.hostname);
}
function onFail(jqXHR,textStatus,errorThrown){
        $("#result").html("Shit happens");
}
//fire request
getRequest(url,onSuccess(),onFail());

回调被触发,但数据未定义。

最后我通过重写如下函数修复了它:

function getRequest(url,successCallback,failCallback){
    $.ajax({
        url: url,
        timeout: 3000,
        dataType: "json",
        success: function(data,textStatus,jqXHR){
            successCallback(data,textStatus,jqXHR);
        },
        error: function(jqXHR,textStatus,errorThrown){
            failCallback(jqXHR,textStatus,errorThrown);
        }
    });    
}
用途如下:

getRequest(url,onSuccess,onFail); 

正如@Fabricator所指出的,我看到了对JS中函数如何工作的基本误解。我建议您查找函数对象和函数调用之间的差异。
console.log(数据)
successCallback
中打印什么?还可以更改
getRequest(url,onSuccess(),onFail())
to
getRequest(url、onSuccess、onFail)@manufactor,
getRequest(url,onSuccess,onFail)导致
未捕获引用错误:未定义jqXHR
而成功处理来自后端的响应更改
错误:failCallback(jqXHR,textStatus,ErrorSprown)
错误:failCallback