我想从我的表单获取输入元素到节点js:
客户端
var ss =( $('#addform').serializeArray() );
var url= 'http://localhost:8181/add';
$.ajax({
url:url,
type: 'POST',
dataType: "json",
data:{ss:ss},
success: function(json){
alert("done");
},
error: function(jqXHR, textStatus, err) {
alert('text status '+textStatus+', err '+err)
}
});
[对象,对象,对象,对象,对象,对象,对象]
服务器端:
router.route('/adduser')
.post(function(req, res) {
res.header("Access-Control-Allow-Origin", "*");
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
console.log(req.body);
console.log(req.body.name);
}
结果:
{ ss:
[ { name: 'name', value: 'a' },
{ name: 'lastname', value: 'a' },
{ name: 'email', value: 'a' },
{ name: 'password', value: 'a' },
{ name: 'password2', value: 'a' },
{ name: 'country', value: 'a' },
{ name: 'phone', value: 'a' } ] }
console.log(req.body.name);
返回undefined
如何在服务器端获取这些对象的元素?
答案 0 :(得分:0)
req.body.name
这并不奇怪。
在req.body
看(您已经记录了它,并在问题中引用了它!)。
对象具有的唯一属性是ss
,其值是数组。它没有name
属性。
不要这样做:
var ss =( $('#addform').serializeArray() );
它不会以您想要的格式提供数据。
改为使用serialize
。
var ss = $('#addform').serialize();
这将为您提供URL编码的字符串。所以直接将它传递给数据而不是传递对象:
data: ss,
答案 1 :(得分:0)
SS变量是一个对象数组。所以你必须用循环遍历对象。
var data = req.body.ss;
for(var i in data){
console.log(data[i].name);
}