Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery传递回调函数,但使用返回值_Javascript_Jquery_Ajax_Callback - Fatal编程技术网

Javascript jQuery传递回调函数,但使用返回值

Javascript jQuery传递回调函数,但使用返回值,javascript,jquery,ajax,callback,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,

好吧,我们开始吧

我已经在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函数的地方没有说明,因此我会得到一个未定义的值

我的问题是,有没有一种方法可以传递一个带有“参数”的函数,该函数应该使用该参数作为它自己的函数值

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


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

当您将“()”放在函数引用之后时,它将在该时刻执行它。在您的例子中,它正在执行一个空函数,正如前面几行定义的那样。带有事件参数的success函数被声明为罚款,但从未被使用


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

成功函数中的
f()
是什么?您正在执行成功函数,而不是将其指定为处理程序。删除“success:ns.success()”行中的()。我为String类创建了一个格式原型,其作用基本上与C#String.format()函数相同。它基本上会用f()中传递的值替换{0}{1}{2}。我相信我之前已经厌倦了,但现在我会再做一次,很高兴这样做了。我将添加它作为答案,以便其他具有类似经验的人看到它。;)顺便说一句:我总是喜欢名称空间/对象来简化事情,做得很好。非常感谢。我确信我已经试过了,但显然没有!再次感谢!
ns.send = function() {
    $.ajax({
        type: ns.type,
        url: ns.url,
        data: ns.data,
        success: ns.success  // you don't want to execute
    });
}