2 回答
TA贡献1790条经验 获得超9个赞
试试这样的https://jsfiddle.net/voaf1sLg/。
归根结底是您不会将这些搜索结果存储在任何地方。我已经修改了异步函数的代码,以返回包含所有结果的完整数组(在所有 33 个 API 调用之后,嗯!),然后返回带有所述自动完成条目的已履行承诺。相应地修改您的代码。
async function getEx() {
let url = 'https://wger.de/api/v2/exercise/?format=json'
const array = [];
while (url) {
const res = await fetch(url)
data = await res.json()
for (const item of data.results) {
console.log(item.name)
array.push(item.name);
}
url = data.next
}
return array;
}
$(function() {
let tags = [];
getEx().then(res => {
$( "#tags" ).autocomplete({
source: res
});
});
} );
TA贡献2003条经验 获得超2个赞
我可以看到您的总结果数是 685,如果我们能一口气完成这些记录,那就更好了。但如果不可能,那么我只需使用递归相应地修改您的代码。
var sourcearray = []
var getData = function(url) {
$.getJSON(url, function(d) {
Array.prototype.push.apply(sourcearray, d.results);
if (d.next != null) {
getData(d.next);
} else {
console.log(sourcearray)
var config={
minLength: 1,
source: sourcearray,
focus: function(event, ui) {
$("#suggest").val(ui.item.license_author);
return false;
},
select: function(event, ui) {
$("#suggest").val(ui.item.license_author);
return false;
}
};
$("#suggest").autocomplete(config).autocomplete("instance")._renderItem = function(ul, item) {
return $("<li>").append("<div>" + item.license_author + "<br>" + item.description + "</div>").appendTo(ul);
};
}
})
}
$(function() {
getData("https://wger.de/api/v2/exercise/?format=json")
});
添加回答
举报