JavaScript 从 JSON 数组中给出未定义的值
JavaScript gives undefined value from JSON array
我是 JS 的新手,我有一个问题,无法得到解决方案。我用 Java SE、Jersey 和 Jackson 写了一个后端。一切都好。我的 REST 端点是 运行。但我不知道如何引用 json 数组对象。 “时间”值工作正常。 “团队”的数组总是说“未定义”。
我想用这些值填充 HTML table。这是代码片段:
<script>
var dataExchange = []
$.ajax({
method:'GET',
url:'http://localhost:8080/api/calendar',
success:function(response){
dataExchange = response
buildTable(dataExchange)
console.log(dataExchange)
}
})
function buildTable(data){
var table = document.getElementById('eventTable')
for (var i = 0; i < data.length; i++){
var row = `<tr>
<td>${data[i].dateOfEvent}</td>
<td>${data[i].team.teamName}</td> <---Here is the problem
</tr>`
table.innerHTML += row
}
}
</script>
那是来自后端的 JSON:
[{"dateOfEvent":"2019-07-18T18:30","team":[{"teamName":"Salzburg"}]},{"dateOfEvent":"2019-07-18T18:30","team":[{"teamName":"Sturm"}]},{"dateOfEvent":"2019-10-23T09:45","team":[{"teamName":"Capitols"}]},{"dateOfEvent":"2019-10-23T09:45","team":[{"teamName":"KAC"}]}]
拜托,任何人都可以解释我在这里做错了什么,以及它如何与 JavaScript 一起工作?
data[i].team
不是对象 - 它是一个包含一个对象的 数组。您需要使用 data[i].team[0].teamName
:
function buildTable(data) {
var table = document.getElementById('eventTable');
for (var i = 0; i < data.length; i++) {
var row = `<tr>
<td>${data[i].dateOfEvent}</td>
<td>${data[i].team[0].teamName}</td>
</tr>`
table.innerHTML += row;
}
}
根据您的 json
它必须是这样的:
<td>${data[i].team[0].teamName}</td>
我是 JS 的新手,我有一个问题,无法得到解决方案。我用 Java SE、Jersey 和 Jackson 写了一个后端。一切都好。我的 REST 端点是 运行。但我不知道如何引用 json 数组对象。 “时间”值工作正常。 “团队”的数组总是说“未定义”。
我想用这些值填充 HTML table。这是代码片段:
<script>
var dataExchange = []
$.ajax({
method:'GET',
url:'http://localhost:8080/api/calendar',
success:function(response){
dataExchange = response
buildTable(dataExchange)
console.log(dataExchange)
}
})
function buildTable(data){
var table = document.getElementById('eventTable')
for (var i = 0; i < data.length; i++){
var row = `<tr>
<td>${data[i].dateOfEvent}</td>
<td>${data[i].team.teamName}</td> <---Here is the problem
</tr>`
table.innerHTML += row
}
}
</script>
那是来自后端的 JSON:
[{"dateOfEvent":"2019-07-18T18:30","team":[{"teamName":"Salzburg"}]},{"dateOfEvent":"2019-07-18T18:30","team":[{"teamName":"Sturm"}]},{"dateOfEvent":"2019-10-23T09:45","team":[{"teamName":"Capitols"}]},{"dateOfEvent":"2019-10-23T09:45","team":[{"teamName":"KAC"}]}]
拜托,任何人都可以解释我在这里做错了什么,以及它如何与 JavaScript 一起工作?
data[i].team
不是对象 - 它是一个包含一个对象的 数组。您需要使用 data[i].team[0].teamName
:
function buildTable(data) {
var table = document.getElementById('eventTable');
for (var i = 0; i < data.length; i++) {
var row = `<tr>
<td>${data[i].dateOfEvent}</td>
<td>${data[i].team[0].teamName}</td>
</tr>`
table.innerHTML += row;
}
}
根据您的 json
它必须是这样的:
<td>${data[i].team[0].teamName}</td>