0

我目前对 jquery ajax 成功响应使用匿名函数。

success: function(data){
  code
},

尝试使用命名函数时:

success: success(data),

它声称未设置变量数据。我想我能做到

success: function(data){
  success(data)
},

但这感觉不像它应该如何完成。为什么它会这样,我应该怎么做?

4

3 回答 3

2

这是因为 JQuery 期望引用一个函数,而不是函数调用

JQuery 需要知道必须调用什么函数。相反,success(data)您传递的是函数调用的结果success(data)(可以是任何东西,也可以是 void - 没有结果),根本不知道要做什么。

引用是指向一个对象的东西,在这种情况下是一个“函数对象”。函数调用可以被认为是一个执行的动作,它给出或不给出作为表达式计算的结果。

只需使用:

success: success
于 2012-07-18T00:01:33.620 回答
1

您只需要传递参考。你这样做,买只是传递名字,比如

success: success

到目前为止,您所做的是success通过键入括号来执行函数并分配该函数的返回值。

于 2012-07-17T23:58:47.430 回答
1

success属性采用类型的对象functionfunction(data) { }返回一个函数。success(data) 调用该函数并返回它返回的任何内容。如果您的函数被调用success,您只需执行以下操作:

success: success,
于 2012-07-17T23:59:45.490 回答