对象数组的 jQuery POST 到节点
Posted
技术标签:
【中文标题】对象数组的 jQuery POST 到节点【英文标题】:jQuery POST of an array of objects to Node 【发布时间】:2020-11-19 12:42:11 【问题描述】:我正在尝试使用 jQuery 向我的 Node 应用程序发送一个 POST 请求,数据中包含一组对象。当请求正文到达服务器时,数组数据被吹散到各个字段中,让我无法使用数组函数。
数据对象
keyworddata = [
field1 : 'foo1',
field2 : 'bar1'
,
field1 : 'foo2',
field2 : 'bar2'
]
postdata =
newtitle : 'New Title',
newtopic : 'New Topic',
keywords : keyworddata
jQuery POST
function postNewData(senddata)
$.post("/data/add", senddata, function(data,status,xhr)
//wanting to do some stuff here
);
;
postNewData(postdata);
控制器代码 - /data/add 路由将请求发送到此函数
exports.addNewData = (req, res) =>
console.log(req.body);
//need to iterate over req.body.keywords as an array but can't
服务器上的控制台显示 - 关键字数组被拆分为单独的字段
'newtitle' : 'New Title',
'newtopic' : 'New Topic',
'keywords[0][field1]' : 'foo1'
'keywords[0][field2]' : 'bar1'
'keywords[1][field1]' : 'foo2'
'keywords[1][field2]' : 'bar2'
我也尝试使用stringify
构建数据并发送到发布请求
keyworddata = [
field1 : 'foo1',
field2 : 'bar1'
,
field1 : 'foo2',
field2 : 'bar2'
]
postdata =
newtitle : 'New Title',
newtopic : 'New Topic',
keywords : JSON.stringify(keyworddata)
使用stringify
,数据像这样到达节点
'newtitle' : 'New Title',
'newtopic' : 'New Topic',
'keywords' : '["field1":"foo1","field2":"bar1","field1":"foo2","field2":"bar2"]'
这似乎更接近,但我无法对字符串运行数组函数,也找不到解决方法来将其返回到对象数组。
我也尝试过使用$.ajax
调用,但得到的结果与上述相同。
【问题讨论】:
尝试使用JSON.parse(string)
- 这会奏效。
@PraveenKumarPurushothaman 这就是答案。我发誓我对此进行了研究,但找不到答案。谢谢。
【参考方案1】:
使用JSON.parse(string)
会起作用。示例代码是:
const reqContent =
'newtitle': 'New Title',
'newtopic': 'New Topic',
'keywords': '["field1":"foo1","field2":"bar1","field1":"foo2","field2":"bar2"]'
;
const keywords = JSON.parse(reqContent.keywords);
console.log(keywords);
【讨论】:
以上是关于对象数组的 jQuery POST 到节点的主要内容,如果未能解决你的问题,请参考以下文章
如何为 JSON Post 序列化 jQuery 对象数组?
jquery选择器$("...")返回的是数组,为啥还能继续练式操作$("...").方法 ?