首先,抱歉英语不好。 好吧,在这种情况下的问题是一个函数:'刷新',查询响应并从mysql中的数据库返回值,但当我尝试获取响应并返回到另一个函数时,显示“未定义”值..这里是代码:
function refresh(query){
var res;
$http.get('/quaestioJS/'+query).
success(function(data, status, headers, config) {
console.log(data); //HERE, THE INFO IS SHOWING CORRECTLY
res = data; //HERE 'res' IS NOT GRABBING THE VALUE OF 'data'
}).
error(function(data, status, headers, config) {
console.log("Error.");
console.log(data);
});
console.log(res);
return res;
}
更新V1.0
更新的代码:
function refresh(query){
$http.get('/quaestioJS/'+query).
success(function(data, status, headers, config) {
return data;
}).
error(function(data, status, headers, config) {
console.log("Error.");
console.log(data);
});
}
这里显示了代码中的变量和函数......响应是相同的:undefined
function find(tabla){
var x = refresh("SELECT * FROM "+tabla);
console.log(x);
$scope.limpiar();
}
答案 0 :(得分:0)
$ http.get的原因是async。因此,您正在正确设置res变量,但是当您是控制台日志记录res时,它会在返回数据之前发生。所以正确的修改是:
function refresh(query, callback){
var res;
$http.get('/quaestioJS/'+query).
success(function(data, status, headers, config) {
console.log(data);
res = data;
callback(res);
}).
error(function(data, status, headers, config) {
console.log("Error.");
console.log(data);
});
}
function find(tabla){
var x = refresh("SELECT * FROM "+tabla, function(data){
console.log(data);
$scope.limpiar();
});
}
编辑:抱歉,我的第一次尝试是一个错误,完全忘记了返回只会返回成功函数。
答案 1 :(得分:0)
这是callbacks
的概念出现的时候。为了获取响应,您必须传递一个函数/回调/响应处理程序,它将为您提供操作响应的控件。
您在当前实现中未定义的原因是因为调用的函数的执行在HTTP调用的响应出现之前完成。在这种情况下,返回的值将是未定义的。
因此,您可以通过传递响应处理程序来获取响应,如下所示:
function find(tabla){
refresh("SELECT * FROM "+tabla, function(data, status, headers, config) {
console.log(data);
$scope.limpiar();
});
}
function refresh(query, handler) {
$http.get('/quaestioJS/'+query).
success(handler).
error(function(data, status, headers, config) {
console.log("Error.");
console.log(data);
});
}