我有一段代码通过一个函数向我网站的另一部分提交GET请求。
function getStatus(ID) {
$.get('/api/'+ID+'/info', function(statusCallback) {
return statusCallback;
});
}
console.log(getStatus(ID));
我希望此代码返回然后记录的内容就是我需要的信息。
我在控制台日志中实际得到的是
undefined
我该怎么做才能得到实际结果?
答案 0 :(得分:0)
您需要按以下方式更改功能:
function getStatus(ID) {
$.get('/api/'+ID+'/info', function(statusCallback) {
console.log(statusCallback);
});
}
作为get调用的第二个参数传递的函数称为成功回调。一旦在getStatus
函数的每次调用中发出的get请求成功完成,它将被调用。只有这样,您才能访问服务器返回的内容,并且可以像上面一样轻松地对其进行访问。
更新
如果要返回服务器发送的数据,则必须先声明一个变量
function getDataById(ID){
function callback(data){
return data;
}
$.get('/api/'+ID+'/info', function(data) {
return callback(data);
});
}
答案 1 :(得分:0)
您正在执行异步操作。在您的情况下使用回调。如果您想打印statusCallback
,则必须像Christos所说的那样进行console.log记录。
也
console.log(getStatusId())
将返回undefined
,因为它是从没有显式返回的函数返回的默认值。您的函数没有return
语句,只调用了一些异步方法。
顺便说一句,如果可以的话,尝试使用promise而不是回调;)
答案 2 :(得分:0)
借助ES7,您可以使用异步等待
async function getStatus(ID) {
$.get('/api/'+ID+'/info', function(statusCallback) {
// This is executed in the future, but await knows how to deal with it
return statusCallback;
});
}
console.log(await getStatus(ID));
这是一个入门的好习惯,因为代码更容易阅读。