Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从jqueryajax请求返回数据_Javascript_Javascript Events_Jquery - Fatal编程技术网

Javascript 从jqueryajax请求返回数据

Javascript 从jqueryajax请求返回数据,javascript,javascript-events,jquery,Javascript,Javascript Events,Jquery,我试图获取一个函数来执行ajax查询,然后将解释后的JSON作为对象返回。但是,无论出于何种原因,一旦执行了此请求,数据只能从函数内部访问 function getCacheImage(direction) { jQuery.ajax({ url: json_request_string, success: function(data) {

我试图获取一个函数来执行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请求被发送,控制权立即返回给调用函数。您需要做的是处理回调函数中的数据。

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

    function getCacheImage(direction) {

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

    }
无论您想对数据做什么,都可以在回调函数中执行

    function getCacheImage(direction) {

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

    }