为什么我必须将函数包含在另一个函数中?

时间:2010-07-17 20:46:00

标签: javascript ajax jquery

当我用JSON编写函数时,为什么必须将它包含在匿名函数中?

这有效:

$.ajax({
        type: 'POST',
        url: 'http://www.myurl.com',
        data: data,
        success: function(data) {
            alert(data);
        }
});

这不起作用:

$.ajax({
        type: 'POST',
        url: 'http://www.myurl.com',
        data: data,
        success: alert(data)
});

由于

2 个答案:

答案 0 :(得分:6)

你可以做到这一点。您只是使用错误 syntax

success属性需要函数表达式而不是函数()调用(然后将值返回到success);

所以

success: myfunction

而不是

success: myfunction()

答案 1 :(得分:3)

简而言之,因为您正在执行 alert()并尝试将结果分配给success回调,所以这不会工作(alert()结果undefined)。但是你可以这样做:

$.ajax({
    type: 'POST',
    url: 'http://www.myurl.com',
    data: data,
    success: customFunc //*not* customFunc() which would call it
});

在这种情况下,customFunc将获得与success次传递相同的参数,因此它的签名应为:customFunc(data, textStatus, XMLHttpRequest),尽管它可以是子集,例如customFunc(data)