好的,我们开始吧,
我在 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/