javascript - jQuery 传递回调函数但使用返回值

标签 javascript jquery ajax callback

好的,我们开始吧,

我在 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 函数将其用作返回数据,但它并没有以这种方式发生。

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

我的问题是,有没有办法传递带有“参数”的函数,该函数应该将其用于它自己的函数值?

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

亲切的问候

最佳答案

您正在执行成功函数,而不是将其指定为处理程序。删除“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
    });
}

当您将“()”放在函数引用后面时,它将立即执行该函数。在您的情况下,它正在执行一个空函数,如几行所定义。带有事件参数的成功函数被声明为正常,但从未被使用。

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

关于javascript - jQuery 传递回调函数但使用返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29923460/

相关文章:

javascript - 通过 jquery 将文本添加到 <textarea> 而不是添加到 HTML

jquery - 将主体移动到 IFRAME 会破坏内部链接

javascript - 使用带有 switch 语句的 jQuery 显示某些按钮

javascript - yui和yui3的比较

javascript - Javascript 中的自调用函数

javascript - AngularJS - 如何获得两个索引

javascript - 使用 jQuery,我能否定位一个元素以仅在父元素悬停时显示其子元素?

jquery - Asp.net MVC 5 Ajax POST 在应用程序发布后抛出异常 404(未找到)

jquery - 成功时重定向并失败时显示错误

php - 使用 AJAX 将变量发送到 php