jQuery 传递回调函数但使用 return 值

jQuery passing function for callback but make use of return value

好的,开始吧,

我在 javascript 中创建了一个 ajax 命名空间,这样可以更轻松地记住需要插入哪些值才能使其正常工作。

(function (ns) {
    ns.type = "POST";
    ns.url = "/";
    ns.data = {};
    ns.success = function() {};

    ns.send = function() {
        $.ajax({
            type: ns.type,
            url: ns.url,
            data: ns.data,
            success: ns.success()
        });
    }

}(fps.ajax));

为了使用它,我执行以下操作

var ajax = fps.ajax;
ajax.url = "/credit/getBalance";
ajax.type = "GET";
ajax.success = function (e) {
    navCredits.text(navCredits.text().f(e));
};
ajax.send();

现在我遇到的问题是我的成功功能。

我向它传递了一个变量,我希望我的 ajax 函数使用它,因为它是 return 数据,但它不是以这种方式发生的。

我对此的理解是,它 (e) 未在设置成功函数的位置声明,因此我会得到一个未定义的值。

我的问题是,有没有一种方法可以传递带有 "parameter" 的函数,该函数应该使用它自己的函数值?

我觉得我解释得不是很好,但希望那里有足够的代码来帮助您理解我想要实现的目标。

亲切的问候

您正在执行您的成功函数,而不是将其指定为处理程序。删除 "success:ns.success()" 行中的 ()。

ns.send = function() {
    $.ajax({
        type: ns.type,
        url: ns.url,
        data: ns.data,
        success: ns.success  // you don't want to execute
    });
}

当你在函数引用后面加上“()”时,它会在那个时刻执行它。在您的情况下,它正在执行一个空函数,如几行所定义的那样。带有事件参数的成功函数被声明为正常,但从未被使用过。

当您删除“()”时,它会将函数对象分配给 属性。当您添加“()”时,它会在那一刻执行函数并将 return 值分配给 属性。当 jQuery "ajax" 调用成功完成时,success 函数将在该对象上执行,因此它们会在那时处理“()”的添加。 ;)