繁体   English   中英

jQuery Ajax作用域问题

[英]jquery ajax scope issue

我需要帮助从jquery ajax调用返回收益。

这是我得到的:

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
  });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM