【发布时间】:2018-06-07 00:13:30
【问题描述】:
所以我正在做的是从一个 json 文件中获取值并将它们推送到一个数组中,以便我可以随机选择一个并将其显示在一个 html 文件中。我遇到的问题是,即使数组中有东西,它也会把它当作空的......
var quotes = [];
var authors = [];
function loadJSON(callback) {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', 'quotes.json', true);
xobj.onreadystatechange = function () {
if (xobj.readyState == 4 && xobj.status == "200") {
// Required use of an anonymous callback as .open will NOT return a value but simply returns undefined in asynchronous mode
callback(xobj.responseText);
}
};
xobj.send(null);
}
function init() {
loadJSON(function(response) {
// Parse JSON string into object
var data = JSON.parse(response);
for(var i in data){
var key = i;
var val = data[i];
quotes.push(key);
authors.push(val);
}
});
}
init();
var index = Math.floor(Math.random()* (quotes.length + 1));
document.getElementById("p1").innerHTML = "<span class=\"quotes\">“</span>" + quotes[index] + "<span class=\"quotes\">”</span>" + "<span id=\"author\">" + " – " + authors[index] + "</span";
所以在我的 init 函数中,它将键和 val 推送到一个数组,但它把它当作是空的......如果这是一个简单的问题,我很抱歉,但我对 JSON 很陌生。谢谢
【问题讨论】:
-
另外你最后的
</span缺少>。 -
@Xufox 好的,谢谢,这也只是复制粘贴错误
-
尝试将最后 2 行放入 init 函数中
-
@Ayudh 成功了,谢谢!
-
该死的答案好像被我打败了哈哈
标签: javascript arrays json node.js xmlhttprequest