从jQuery ajax请求返回数据

我正在尝试获取一个函数来执行ajax查询,然后将解释的JSON作为对象返回。 但无论出于何种原因,一旦执行此请求,只能从函数内访问数据。

function getCacheImage(direction) { jQuery.ajax({ url: json_request_string, success: function(data) { return data; } }); } 

如何让这个函数适当地返回’数据’?

谢谢。

您需要使用同步ajax请求(不是典型的或推荐的)并将数据捕获到外部作用域中的变量中,或者弄清楚如何操作回调函数中的数据。 问题是ajax函数在ajax调用完成之前返回 – 它是异步的。

同步方式:

  function getCacheImage(direction) { var capture; jQuery.ajax({ url: json_request_string, aSync: false, success: function(data) { capture = data; } }); return capture; } 

典型的,使用回调

  function getCacheImage(direction,callback) { jQuery.ajax({ url: json_request_string, success: function(data) { callback( data ); } }); } getCacheImage('left', function(data) { ...do something with the data... } 

你不能。 AJAX首字母缩写词的第一个字母代表异步,意味着发送AJAX请求并立即将控制权返回给调用函数。 您需要做的是使用回调函数中的数据。

您将数据返回到调用回调函数的代码。 该代码无法及时发送数据,因此可以从启动请求的函数返回。

无论您想对数据做什么,都可以使用回调函数。