2010-07-17 66 views
2

当我用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) 
}); 

感谢

回答

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)

6

你可以这样做。您只是使用错误syntax

success的属性需要一个函数表达不是一个函数()调用(然后返回一个值到success);

所以

success: myfunction 

,而不是

success: myfunction() 
相关问题