有没有办法可以ajax发布一个对象数组并在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 :(得分:1)
这种情况正在发生,因为你没有在你的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
属性。
答案 1 :(得分:0)
首先,您应该删除其中一个context
变量。当你已经宣布它已经在顶部时,不需要第二个。
其次,您似乎发布了错误的网址,如果是/api/addcompany
或/api/addcontact
?