所以我知道我的问题在于异步,但首先我不明白为什么。我在线尝试了一些代码示例仍未定义。
我的理解是,一旦ajax检索到数据,就会执行done中的函数。然而,谷歌搜索告诉我,在检索数据之前正在执行函数,导致函数不传递变量,从而导致未定义。
jQuery.ajax({
"url": 'https://d.apicloud.com/mcm/api/card?filter={"where":{},"order":"hot;DESC","skip":0,"limit":20}',
"cache": false,
"headers": {
"X-APICloud-AppId": "A694530933",
"X-APICloud-AppKey": appKey
},
"type": "GET"
}).done(function(data, status, header) {
//success body
for (var i = 0; i < data.length; i++) {
var listliked= "htmlcode"+data[i].id;
var list20 = "htmlcode"+data[i].user;
db.selectSql({
name: 'dm',
sql: 'SELECT 1 FROM fav WHERE fav.id ="' + data[i].id + '";',
}, function(ret, err) {
if (ret.status) {
if (ret.data[0] != null) {
$api.append(outputall, listliked);
} else {
$api.append(outputall, list20);
}
} else {
alert(JSON.stringify(err));
}
});
}
}).fail(function(header, status, errorThrown) {
//fail body
})