JMW*_*ker 7 javascript connect node.js express
我的应用程序是Node.js使用Express.
使用jQuery POST从我的客户端发送此测试数据:
{
title: 'hello',
notes: [
{title: 'note 1'},
{title: 'note 2'}
]
Run Code Online (Sandbox Code Playgroud)
}
这是我的服务器代码中的结果:
{ title: 'hello', notes: { '0': { title: 'note 1' }, '1': { title: 'note 2' } } }
Run Code Online (Sandbox Code Playgroud)
我希望将数组的注释作为数组插入到我的数据库中.我错过了什么?
因为我无法自己添加8小时的答案(wtf?)但是它并没有真正回答为什么Express.bodyParser无法正确解析JSON
好的,我可以使用以下方式让它工作:
JSON.stringify ( data )
Run Code Online (Sandbox Code Playgroud)
在客户端然后服务器端使用
JSON.parse( req.rawBody )
Run Code Online (Sandbox Code Playgroud)
这确实有问题,为什么Express.bodyParser无法正确解析JSON?!
Raj*_*jat 17
在您的客户端:
$.ajax({
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json',
url: '/endpoint'
});
Run Code Online (Sandbox Code Playgroud)
在您的服务器上:
console.log('POST: ',req.body);
Run Code Online (Sandbox Code Playgroud)
问题是jQuery在发送之前弄乱了你的数据.如果您设置了正确的MIME类型,那么它就会让您自由.
Tej*_*ejs -4
那么这一切就都有意义了;您可以使用Express.bodyParser来获取这样的结果,或者您可以使用JSON.parse甚至eval('(' + myPostedData + ')')来获取没有索引的结果对象。
根据您当前的设置,您需要做的就是:
for(var j = 0; j < myVariable.notes.length; j++)
{
var currentNode = myVariable.notes[j];
//currentode.title should be 'note 1' for j = 0, etc
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18776 次 |
| 最近记录: |