尝试从我的前端表单获取POST数据。运行console.log(req.body)
时,我得到以下信息:
[ { name: 'name', value: 'kevin' }
{ name: 'email', value: '' },
{ name: 'phone', value: '' },
{ name: 'message', value: '' } ]
问题:我在console.log(req.body.name)
上的当前输出是:Undefined
预期输出为:kevin
有人可以解释为什么会这样吗?我能做些什么来避免呢?我对JSON不够了解,无法尝试学习。
谢谢
答案 0 :(得分:1)
req.body
将是一个对象数组。您需要使用forEach
进行常规的for循环对其进行迭代并获取值。
如果只想从第一个对象中获取元素,则执行req.body[0].name
,其中[0]
是索引
答案 1 :(得分:1)
有人可以解释为什么会发生这种情况以及我该怎么做才能避免?
尝试使用forEach()
来获取名称/值,因为您req.body
是array of object
,因此您必须对其进行迭代并获取名称或值像下面这样,避免输出undefined
。另外,如果您只想从array of object
中获取任何特定的名称/值,请尝试这样的操作,而无需像forEach
这样的循环
req.body[0].name
或req.body[0].value
。希望你现在明白了:)
const array_of_obj = [{
name: 'name',
value: 'kevin'
}, {
name: 'email',
value: ''
},
{
name: 'phone',
value: ''
},
{
name: 'message',
value: ''
}
];
array_of_obj.forEach((elm) => {
console.log(`name = ${elm.name} and value = ${elm.value}`);
})
答案 2 :(得分:1)
检查我创建的这个示例。希望这会有所帮助
var json1 = {"players":[
{"name":"Messi", "goals":8},
{"name":"Ronaldo", "goals":22},
{"name":"Costa", "goals":20},
{"name":"Neymar", "goals":13},
{"name":"Arabi", "goals":6},
{"name":"Bale", "goals":3},
{"name":"Toquero", "goals":0}]};
console.log(json1.players[0]);
for(let item of json1.players){
console.log(item);
}