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 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 指出的那样

关于javascript - JQuery 的 ajax 函数的包装器。回调已触发,但没有参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24978118/

相关文章:

javascript - 如何在 Webpack 中使用多个条目以及 HtmlWebpackPlugin 中的多个 HTML 文件?

javascript - Bootstrap 工具提示禁用了我的 javascript 的部分内容

javascript - 如何在 url 中将数组作为参数发送?

javascript - 来自 EventListener 的 ReactJS 事件不会更新 View

主 DIV 上的 JavaScript 和 jQuery 切换不起作用

javascript - 根据内部div调整div的高度

javascript - 如何使输入组在完成书写后或单击任意位置时折叠?

php - 从 Angular 2 Web 应用程序在 MySQL 中插入数据

ASP.NET 页面仅 POST 访问

javascript - FireFox 上的 CSS 溢出隐藏问题