假设我必须在同一页面上编辑一批相同类型的对象:
//-jade
form(action='', method='POST')
for each message_id in messages_ids
input(type='text', name='message', id='#{message_id}')
input(type='text', name='author', id='#{message_id}')
input(type='submit', value='Send')
Run Code Online (Sandbox Code Playgroud)
我知道我不能在后端处理这种形式'因为它的原因 - 它不会被发送到后端.但是,有办法吗?我想在后端得到这样的东西:
//js
for (var i = 0; i <= req.body.message.length; i++) {
console.log (
'ObjectID: ' + req.body.message[i].id, //-? null, just to show what I'm trying to get
'Message: ' + req.body.message[i],
'Author: ' + req.body.author[i]
);
}
Run Code Online (Sandbox Code Playgroud)
这是伪代码(它不会工作).那么,有什么想法吗?
PS我在没有AJAX的情况下如何做到这一点
我有一个简单的形式:
<form method="post" action="/test">
<input type="hidden" name="arr[]" value="val1">
<input type="hidden" name="arr[]" value="val2">
<input type="hidden" name="arr[]" value="val3">
<input type="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)
使用控制器:
//...
server.post('/test', function(req, res) {
res.json(req.body);
});
//...
Run Code Online (Sandbox Code Playgroud)
这返回正常:
{
arr: [
"val1",
"val2",
"val3"
]
}
Run Code Online (Sandbox Code Playgroud)
但是,当我将enctype更改为multipart/formdata时
<form method="post" action="/test" enctype="multipart/form-data">
<input type="hidden" name="arr[]" value="val1">
<input type="hidden" name="arr[]" value="val2">
<input type="hidden" name="arr[]" value="val3">
<input type="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)
服务器现在响应:
{
arr[]: "val3"
}
Run Code Online (Sandbox Code Playgroud)
有什么问题?我需要某种配置吗?
万一你想知道,我也发送一个文件,为什么我需要multipart/form-data.