ajax中不能使用return

问题:

写JS时,在A方法中需获取B方法的返回值,此返回值在B方法中是通过ajax得到的,然后在ajax的success回调函数中使用return 将结果返回给调用者A,但A始终收不到返回值,显示undefined。

 

原因:

在ajax的回调函数中不能使用return语句返回结果,原因不详(此结论由实际操作总结而来)。

解决方式:(错误的解决方式,详见下文)

在B 方法中,将ajax的success回调函数中得到结果保存至某变量中,然后在B方法的结尾,ajax操作外,将此变量使用return返回给调用者即可。

重要更新:

以上解决方式通过实践检验,又发现不妥之处:因为是ajax,不能保证及时响应,所以有可能存在B执行return语句时,ajax还没收到结果并将结果赋值给tmp临时变量。于是会出现刷新页面时(特别是第一次刷新),有时并无ajax结果显示出来,再次刷新后就可能正常了。

所以,

建议直接在ajax的回调函数中处理返回结果,不要将其return给某个用于处理显示结果的方法。在上面的例子中,即将A方法中的内容写在B方法中的ajax回调函数里。