我需要帮助从jquery ajax调用返回。
这是我得到的:
var condition = dbCall(km_point['jb'], km_point['kb']);//lat,lng
console.log(condition);
console.log打印“undefined”
这是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;
}
});
}
如何返回我的通话功能?
答案 0 :(得分:3)
它是异步的,所以你必须等待结果,唯一的方法是同步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);
});
答案 1 :(得分:2)
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
});
}