好的,让我们开始,
我在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)没有声明设置成功函数的位置,因此为什么我会得到一个未定义的值。
我的问题是,有没有办法通过"参数传递函数"该函数应该使用它自己的函数值吗?
我不觉得我解释得很好,但希望那里有足够的代码来帮助你理解我想要实现的目标。
亲切的问候
答案 0 :(得分:2)
您正在执行您的成功功能,而不是将其指定为处理程序。从“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”调用成功完成时,成功函数在该对象上执行,因此它们处理当时添加的“()”。 ;)