【问题标题】:Access value of an array sent to node/express server发送到 node/express 服务器的数组的访问值
【发布时间】:2016-03-02 20:14:47
【问题描述】:

首先让我说我是一个完全的新手/黑客。答案可能很简单……我提前道歉。

我通过 jquery $.ajax (POST) 将对象发送到运行 express 的 Node.js 服务器。在我进行 Ajax 调用之前,该对象在我的服务器上看起来像这样:

var data = {
  "to" : "someone@abc.com",
  "attachment" : [{"file": "somefile.jpg"}, {"file": "someOtherFile.jpg"}]
}

这是对我的服务器的调用:

$.ajax({
    type: "POST",
    url: "http://myHostHere.com",
    data: data,
    success: function(data){
      console.log("Success... Returned Data: " + data);
    }
});

在我的节点服务器上,这里是接受请求的路由:

app.post('/send/', urlEncodeParser, function(req, res){
        console.log("Req Body: " + JSON.stringify(req.body));
      });

urlEncodeParser 中间件指的是这段代码:

let urlEncodeParser = bodyParser.urlencoded({ extended:false });     

我的接收节点服务器接收到该对象,我可以通过 req.body.to 轻松获取“to”的值。to 没问题...由于某种原因,我无法弄清楚如何访问“文件”值.当我在我的 Node 服务器上 console.log req.body 时,我现在看到我的对象看起来不同了。

具体来说我叫console.log(JSON.stringify(req.body))

控制台的输出如下所示:

"to" : "some@abc.com",
"attachment[0][file]" : "somefile.jpg",
"attachment[1][file]" : "someOtherFile.jpg"

我不知道如何在我的代码中访问 attachment[0][file] 的值。每次收到错误TypeError: Cannot read property '0' of undefined 时,我都尝试过req.body.attachment[0].filereq.body.attachment[0][file]req.body.attachment[0]['file']

我也尝试只使用console.log("attachment: " + req.body.attachment) 并得到attachment: undefined

非常感谢任何帮助!

【问题讨论】:

  • 貌似中间件没有解析,所以其实是req.body["attachment[1][file]"]访问
  • 感谢@adeneo 的工作......现在弄清楚为什么会发生这种情况。

标签: javascript ajax node.js express


【解决方案1】:

您可以使用括号表示法访问该值:

req.body['attachment[0][file]']

但更重要的是,您发现了为什么您的请求负载看起来像这样......不幸的是,您没有提供任何信息如何发送请求......

【讨论】:

  • 我用更多信息更新了我的原始帖子...我认为这与中间件有关?
  • @Koreys - 看看here
猜你喜欢
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 2021-10-04
  • 2013-12-20
  • 1970-01-01
相关资源
最近更新 更多