Javascript jQuery传递回调函数,但使用返回值
好吧,我们开始吧 我已经在javascript中创建了一个ajax名称空间,它可以更容易地记住需要插入哪些值才能使其工作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,
(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
});
}