出于某种原因,当我使用jQuery创建一个ajax帖子时,节点收到的正文是空的。这是我的ajax帖子:
的jQuery
var formData = {
'order': order,
'words': 'words'
};
$.ajax({
type: 'post',
url: 'https://example.com/charge',
processData: false,
data: JSON.stringify(formData),
contentType: 'json',
xhrFields: {
withCredentials: false
},
headers: {
},
success: function (data) {
console.log('Success');
console.log(data);
},
error: function () {
console.log('We are sorry but our servers are having an issue right now');
}
})
这是我的节点代码:
节点
app.js
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use('/', routes);
routes/index.js
router.post('/charge', function(req, res) {
console.log(req.body);
} //This always logs {}
我不知道我在这里做错了什么。我的浏览器甚至显示了有效负载和发布请求(formData
对象),但节点没有记录任何内容。有什么想法吗?
答案 0 :(得分:4)
使用像这样的ajax请求:
$.ajax({
type: 'post',
url: 'https://example.com/charge',
data: formData,
xhrFields: {
withCredentials: false
},
headers: {
},
success: function (data) {
console.log('Success');
console.log(data);
},
error: function () {
console.log('We are sorry but our servers are having an issue right now');
}
})
答案 1 :(得分:1)
检查以下api
通过将processData选项设置为false,可以防止将数据自动转换为字符串。
如果要使用json类型,则必须将processData设置为true
答案 2 :(得分:1)
我的也没有工作,但是通过使用来解决了
contentType: 'application/json',
data: JSON.stringify(formdata),
答案 3 :(得分:0)
这可能是一个较晚的答复,但也请注意JQuery ajax文档:
对象必须是键/值对。
这花了我2个小时(服务器收到空的正文),因为我试图发布一个更加“复杂”的对象。