2016-03-04 123 views
0

有没有办法让ajax发布一个对象数组,然后在node.js服务器上解析它?这里是我的客户端代码:如何将AJAX POST对象数组发布到node.js服务器?

var context = []; 

obj1 = { 
     first_name: 'e', 
     last_name: 'e', 
     contact_email: 'e', 
     contact_phone_num: 'e', 
     contact_notes: 'e' 
    } 


    obj2 = { 
     first_name: 'a', 
     last_name: 'a', 
     contact_email: 'a', 
     contact_phone_num: 'a', 
     contact_notes: 'a' 
    } 


    var context = []; 

    context.push(obj1); 
    context.push(obj2) 


    $.ajax({ 
    type: "POST", 
    url: '/api/addcontact', 
    data: context, 
    success: function(data, status) { 
     alert('company added!'); 

    }, 
    error: function(data, status, res) { 
     console.log('err: ' + res); 
    } 
}); 

我的服务器端代码:

api.post('/api/addcompany', function(req, res) { 
    console.log('add company hit'); 
    console.log(req.body); //returns {} 
    res.sendStatus(200); 
}); 

现在,当我打印返回{}请求主体。

有人可以帮助我在服务器端正确访问对象数组吗?

在此先感谢!

+0

您正在使用哪一个身体分析中间件? – mscdex

回答

0

发生这种情况是因为您没有在您的ajax帖子内发送对象,而是发送了一个数组。尝试在{}中包装数组来表示它确实是一个对象,然后在您的服务器代码中引用该对象属性。

var context = []; // array 

    context.push(obj1); 
    context.push(obj2) 


    $.ajax({ 
    type: "POST", 
    url: '/api/addcontact', 
    data: {context: context}, // requires an object here 
    success: function(data, status) { 
     alert('company added!'); 

    }, 
    error: function(data, status, res) { 
     console.log('err: ' + res); 
    } 
}); 

然后在您的服务器端脚本中,您可以引用正文对象的context属性。

0

首先,您应该删除context变量之一。当你宣布它已经在顶端时,就不需要第二个了。

其次,它似乎是你张贴到错误的网址,应该是/api/addcompany/api/addcontact

相关问题