Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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 jquery ajax范围问题_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript jquery ajax范围问题

Javascript jquery ajax范围问题,javascript,jquery,ajax,Javascript,Jquery,Ajax,我需要帮助从jQueryAjax调用中获取返回 以下是我得到的: var condition = dbCall(km_point['jb'], km_point['kb']);//lat,lng console.log(condition); console.log打印“未定义” 以下是dbCall函数: function dbCall(lat, lng){ $.ajax({ type: "GET", url: 'http://localhost:81/myprojec

我需要帮助从jQueryAjax调用中获取返回

以下是我得到的:

var condition = dbCall(km_point['jb'], km_point['kb']);//lat,lng
console.log(condition);
console.log打印“未定义”

以下是dbCall函数:

function dbCall(lat, lng){
    $.ajax({
    type: "GET",
    url: 'http://localhost:81/myproject/proxy.php',
    data: { url: lat + ',' + lng, units: "auto" }
    }).done(function( data ) {
        if(data != '' && (data)) {
            var dataJSON = JSON.parse(data);
            //console.log(dataJSON);
            return dataJSON;
        } else {
            return false;
        }
    });
 }

如何将返回返回返回到调用函数中?

它是异步的,所以您必须等待结果,唯一的解决方法是同步ajax,这不是您应该使用的。
更改代码以使用
done()
回调中的结果:

function dbCall(lat, lng){
    return $.ajax({
        type: "GET",
        url: 'http://localhost:81/myproject/proxy.php',
        data: { url: lat + ',' + lng, units: "auto" },
        dataType: 'json'
    });
}

dbCall(km_point['jb'], km_point['kb']).done(function(condition) {
    console.log(condition);
});

AJAX请求是异步的,这意味着您无法从单个函数中的AJAX调用响应中获得返回。更好的方法是使用回调函数,在AJAX请求完成后调用该函数:

function dbCall(lat, lng, callback){
  $.ajax({
    type: "GET",
    url: 'http://localhost:81/myproject/proxy.php',
    data: { url: lat + ',' + lng, units: "auto" },
    dataType: 'json'
   }).done(function(data){
       callback(data); // execute callback function and pass data
  });
}

欢迎来到异步的精彩世界!你不能那样做。您应该返回一个承诺。@zeroflagL很好,这是可行的,但有时您可能需要在执行回调函数之前进行额外的错误检查等。