使用ajax和node js获取serializearray()元素

时间:2017-06-07 10:24:56

标签: javascript node.js ajax

我想从我的表单获取输入元素到节点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

如何在服务器端获取这些对象的元素?

2 个答案:

答案 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);
    }