对象数组的 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 到节点的主要内容,如果未能解决你的问题,请参考以下文章

jquery ajax后混合数组对象将空数组发送到php

如何为 JSON Post 序列化 jQuery 对象数组?

jquery选择器$("...")返回的是数组,为啥还能继续练式操作$("...").方法 ?

WCF POST 通过 JQuery。如何在 JSON 中发送数组?

使用 Jquery 从 XML 数据创建对象数组

从 $_POST 中的 json 读取关联数组