javascript - 用于通过 POST 接收 JSON 的 API 接收的类型与发送的类型不同
问题描述
我正在编写一个在 NODE.JS 中获取 JSON 的 api。发送数据的方法是POST。
为了简化请求的管理,我使用 lib Express 和 BodyParser 来解释 POST 请求的正文。
我将信息分组到一个 javascript 对象中,如下所示:
const data = {
"plan": "312409959F9FDDE444959F9C950201D7",
"sender": {
"name": $("[name=pname]").val(),
"email": $("[name=pemail]").val(),
"hash": credentials.hash,
"phone": {
"areaCode": $("[name=pphone]").val().substring(0, 2),
"number": $("[name=pphone]").val().substring(2, 11)
},
"address": {
"street": $("[name=paddress]").val(),
"number": $("[name=pnumber]").val(),
"complement": $("[name=pcomplement]").val(),
"district": $("[name=pbairro]").val(),
"city": $("[name=pcity]").val(),
"state": $("[name=puf]").val(),
"country": "BRA",
"postalCode": $("[name=pcep]").val()
},
"documents": [{
"type": "CPF",
"value": $("[name=pcpf]").val()
}]
},
"paymentMethod": {
"type": "CREDITCARD",
"creditCard": {
"token": credentials.token,
"holder": {
"name": $("[name=pownername]").val(),
"birthDate": $("[name=pbirthday]").val().split('-').reverse().join('/'),
"documents": [{
"type": "CPF",
"value": $("[name=pcpf2]").val()
}],
"phone": {
"areaCode": $("[name=pphone2]").val().substring(0, 2),
"number": $("[name=pphone2]").val().substring(2, 11)
}
},
}
}
}
请求发送如下:
$.post('/adherence', data, function (msg) {
console.log(msg)
})
我后端的收据是这样的:
app.post('/adherence', (req, res) => {
try {
console.log(req.body);
res.send("OK");
} catch (e) {
console.log(e);
res.send(e);
}
});
但是我在 req.body 中得到的是:
{ plan: '312409959F9FDDE444959F9C950201D7',
'sender[name]': 'FRancisco',
'sender[email]': 'falisson.sv@sandbox.pagseguro.com.br',
'sender[hash]': 'ceedf0fd2ffd35f4054104d305088e19e8ca9333bbf70be10bd2ea6f94af226a',
'sender[phone][areaCode]': '63',
'sender[phone][number]': '991047876',
'sender[address][street]': '1105 sul qi 3 al 3 lt 1',
'sender[address][number]': '1',
'sender[address][complement]': '',
'sender[address][district]': 'centro',
'sender[address][city]': 'palmas',
'sender[address][state]': 'TO',
'sender[address][country]': 'BRA',
'sender[address][postalCode]': 'CEP',
'sender[documents][0][type]': 'CPF',
'sender[documents][0][value]': 'CPF',
'paymentMethod[type]': 'CREDITCARD',
'paymentMethod[creditCard][token]': 'b2f303ba63964404b6c466323deb9078',
'paymentMethod[creditCard][holder][name]': 'LUCINEIA',
'paymentMethod[creditCard][holder][birthDate]': '11/01/1990',
'paymentMethod[creditCard][holder][documents][0][type]': 'CPF',
'paymentMethod[creditCard][holder][documents][0][value]': 'CPF',
'paymentMethod[creditCard][holder][phone][areaCode]': '63',
'paymentMethod[creditCard][holder][phone][number]': '991047876' }
在我看来,一切都很正常,我收到的 JSON 格式是发送的。我的代码有什么问题?
解决方案
尝试像这样发送您的请求:
$.ajax({
url: '/adherence',
type: 'POST',
data: JSON.stringify(data),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
console.log(msg)
})
});
推荐阅读
- react-native - 仅从平面列表中设置文本输入中的文本
- react-native - 如何在 const 模式下更改状态值?
- apache-kafka - KStream.through() 不创建中间主题,并影响拓扑中的其他处理器节点
- javascript - 是否可以在浏览器调试控制台中打印出某些内容,以便在单击时调用一个函数?
- javascript - 如何指定数据文件的路径?
- .net - 如何通过一个命令更新我的所有 dotnet 全局工具
- python-3.x - 如何使用 Open-AI GPT 构建特定领域的语言模型以生成自然语言?
- python - 变量过多的 KNN 模型
- python-3.x - 如何在 k-means 聚类中使用 tfidf 值
- docker - 在 Jenkins Slave Docker 容器中运行时,Jenkins Docker Pipeline 插件无法正常工作