我正在尝试在node.js中的post请求上提交带有二维数组字段的表单。但它没有在服务器端提供正确的数组。我收到一个包含所有值的一维数组。
这是表格
<form method="post" action="/add">
<div id="row1">
<input name="type[][serial]" type="text">
<input name="type[][desc]" type="text">
<select name="type[][name]">
<option value="VAL1">VAL1</option>
<option value="VAL2">VAL2</option>
<option value="VAL3">VAL3</option>
</select>
<input name="type[][maker]" type="text">
</div>
<div id="row2">
<input name="type[][serial]" type="text">
<input name="type[][desc]" type="text">
<select name="type[][name]">
<option value="VAL1">VAL1</option>
<option value="VAL2">VAL2</option>
<option value="VAL3">VAL3</option>
</select>
<input name="type[][maker]" type="text">
</div>
<input type="submit" value="Submit">
</form>
我在我的应用程序中定义了使用bodyparser的express 4。
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
当我尝试像这样访问数组的值时
var hd = req.body.type;
var serial = hd[0]['serial'];
然后我得到错误值undefined。
我该如何解决这个问题?
答案 0 :(得分:0)
它对我有用:
var app = require('express')();
app.use(require('body-parser').urlencoded({ extended: true }));
app.get('/', function(req, res) {
res.send('<form method="post" action="/add">\
<div id="row1">\
<input name="type[][serial]" type="text">\
<input name="type[][desc]" type="text">\
<select name="type[][name]">\
<option value="VAL1">VAL1</option>\
<option value="VAL2">VAL2</option>\
<option value="VAL3">VAL3</option>\
</select>\
<input name="type[][maker]" type="text">\
</div>\
<div id="row2">\
<input name="type[][serial]" type="text">\
<input name="type[][desc]" type="text">\
<select name="type[][name]">\
<option value="VAL1">VAL1</option>\
<option value="VAL2">VAL2</option>\
<option value="VAL3">VAL3</option>\
</select>\
<input name="type[][maker]" type="text">\
</div>\
<input type="submit" value="Submit">\
</form>\
');
});
app.post('/add', function(req, res) {
res.json(req.body.type[0]['serial']);
});
app.listen(9000);
然后按下提交后,浏览器中会显示以下内容:["asdf","fdsa"]
答案 1 :(得分:0)
代码没有问题。我正在错误地访问和解析值。