我正在尝试发出POST请求,但是我的服务器不断告诉我我没有正确发送值?
这将检查必填字段,如果缺少则返回错误,并一直说请求主体中缺少该名称。
这是在我的路由器上
router.post('/', jsonParser, (req, res) => {
const requiredFields = ['name', 'size', 'prices'];
for (let i = 0; i < requiredFields.length; i++) {
const field = requiredFields[i];
if (!(field in req.body)) {
const message = `Missing \`${field}\` in request body`;
console.error(message); // responds missing `name` in request body
return res.status(400).send(message);
}
}
StoredProduct.create({
name: req.body.name,
size: req.body.size,
prices: req.body.prices
}).then(item => {
res.status(201).json(item);
}).catch(err => {
console.log(err);
res.status(500).json({
error: err
});
});
});
然后这是我的AJAX请求:
$('#addItemButton').on('click', function() {
console.log($addProductName.val()); //works correctly
console.log($addProductUnit.val()); //works correctly
console.log($addPrice1.val()); //works correctly
console.log($addPrice2.val()); //works correctly
console.log($addPrice3.val()); //works correctly
var newProd = {
name: $addProductName.val(),
size: $addProductUnit.val(),
prices: [{
price: $addPrice1.val()
},
{
price: $addPrice2.val()
},
{
price: $addPrice3.val()
}
]
};
$.ajax({
type: 'POST',
url: '/storedproducts',
data: newProd,
success: function(newProd) {
console.log(`${newProd} created`);
},
error: function() {
alert(`didn't work item: ${newProd}`); // responds didn't work item: [object Object]
}
});
});
服务器响应为400(错误请求),并且在我的服务器日志中显示"Missing
名称in request body
答案 0 :(得分:0)
我正在使用body-parser,我需要将以下内容添加到我的主server.js文件中,以正确发送数据。
app.use(bodyParser.urlencoded({extended:true})); app.use(bodyParser.json());