在javascript中传递函数

时间:2012-12-18 20:35:04

标签: javascript jquery json

我正在尝试将函数传递给另一个函数以在其回调中使用,我使用函数调用该函数...

call("login", {email:user,password:pw}, alert(getResponse()));

调用定义为:

function call(url, p, f){
    $.getJSON(baseUrl + url, p, f(data));
};

和getResponse定义为:

function getResponse(d){
    return d.result.success;
};
data返回

getJSON(请参阅此处:http://api.jquery.com/jQuery.getJSON/

我打算如何将data传递给该功能?

调用该函数,因为它达到了我设置的断点。

当我getResponse

时调用Uncaught ReferenceError: data is not defined

2 个答案:

答案 0 :(得分:3)

使用

call("login", {email:user,password:pw}, function(data){alert(getResponse(data)}));

表达式alert(getResponse())是alert函数的调用(getResponse调用时没有任何参数,因此d.result意味着result会引发错误来自undefined),但function(data){alert(getResponse(data)})是将数据作为参数的新函数的定义。

另请注意,您f(data)中不需要$.getJSON(baseUrl + url, p, f(data));,只需要f,因此您可以致电$.getJSON(baseUrl + url, p, f);

答案 1 :(得分:1)

表达式alert(getResponse())会弹出一个提示,但不会评估某个函数,而是评估undefined

你必须传递一个实现警报的函数(getResponse(d)),其中d是它的参数。

例如表达式function(d){alert(getResponse(d);},例如