我目前正在学习使用 API。我正在从我的 Github 存储库检索数据。我试图让脚本将 JSON 信息加载到 githubData 变量中。但是当我将 githubData 变量记录到控制台时,它返回一个空数组。 然而,如果我在页面加载后创建一个具有完全相同功能的新变量,则脚本将完全按预期工作。 当页面加载时,它并没有加载实际数据。它加载一个空数组。我意识到该函数是异步的,那么当我加载页面时如何使数组不为空? 这是我的代码:
var githubAPI = 'https://api.github.com/repos/zacharysohovich/ticTacToe/readme';
var items = {};
jQuery.ajax({
url: githubAPI,
contentType: 'application/json; charset=utf-8',
success: function(resultData) {
$.each(resultData, function(key,val) {
items[key] = val;
});
}
});
var githubData = $.map(items,function(k,v) {
return ("<p>" + k + ": " + v + "</p>");
});
最佳答案
问题在于它是一个异步调用,这意味着一旦触发请求,它就会进入下一段代码。一旦到达 github,数据项仍然是一个空对象,因为尚未收到 api 响应。
我将实例化 var items = {}
下面的 githubData 变量
像这样
var items = {}
var githubData;
然后在 success: 函数中执行 $.each 之后,您可以将
githubData = $.map(items,function(k,v) {
return ("<p>" + k + ": " + v + "</p>");
});
这可以确保 api 调用已完成,并且只要响应返回一些内容,项目中就应该包含一些内容
关于javascript - jQuery.ajax 返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39420603/