从jQuery ajax请求返回数据

ens*_*are 4 javascript jquery javascript-events

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

    function getCacheImage(direction) {

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

    }
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

tva*_*son 9

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

同步方式:

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

典型的,使用回调

 function getCacheImage(direction,callback) {

        jQuery.ajax({ 
                url: json_request_string,
                success: function(data) {
                   callback( data );
                }
        });
 }

 getCacheImage('left', function(data) {
      ...do something with the data...
 }
Run Code Online (Sandbox Code Playgroud)