使用jQuery ajax请求返回数据

4
我正在尝试编写一个函数,执行Ajax查询并将解释后的JSON作为对象返回。但是出于某种原因,一旦完成此请求,数据仅可从函数内部访问。
function getCacheImage(direction) {
        
        jQuery.ajax({ 
                url: json_request_string,
                success: function(data) {
                return data;
                }
        });
        
}

我该如何使此函数正确返回data
3个回答

9
你需要使用同步的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...
 }

3
您无法这样做。 AJAX 首字母代表异步(asynchronous),意味着 AJAX 请求会被发送,然后立即返回调用函数的控制权。您需要在回调函数中处理数据。

0

您需要将数据返回给调用回调函数的代码。由于该代码无法在时间上将数据返回,因此无法从启动请求的函数中返回数据。

您可以在回调函数中进行任何想要的数据操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接