为什么这样做:
$.ajax({ url: urlIn, dataType: 'json', cache: false })
.done( function( data ) { doStuff( data ) });
Run Code Online (Sandbox Code Playgroud)
但不是这个:
$.ajax({ url: urlIn, dataType: 'json', cache: false })
.done( doStuff( data ) );
Run Code Online (Sandbox Code Playgroud)
第二个"数据"没有定义.我花了一段时间才意识到这就是问题所在.但它对我来说是神秘的,为什么它会这样.
Mar*_*ulz 10
通过调用.done( doStuff( data ) ),您实际上是立即调用该doStuff函数.传递给函数的是它的返回值,它等于你的情况.doneundefined
现在,如果doStuff函数本身返回一个函数,那么返回的函数可以被调用为回调函数doStuff.
你想要做的是将函数作为值传递而不立即调用它:
$.ajax({ url: urlIn, dataType: 'json', cache: false }).done(doStuff);
Run Code Online (Sandbox Code Playgroud)
因为那些不是一回事.
这是一个函数定义:
function( data ) { doStuff( data ) }
Run Code Online (Sandbox Code Playgroud)
这是一个函数调用:
doStuff( data )
Run Code Online (Sandbox Code Playgroud)
它告诉代码doStuff(data) 现在执行并使用其结果作为回调函数.既然data还不存在,那就行不通了.(如果doStuff不返回函数,那将无效.)
类似的版本只是这样:
$.ajax({ url: urlIn, dataType: 'json', cache: false })
.done( doStuff );
Run Code Online (Sandbox Code Playgroud)
data 将自动传递.
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |