【问题标题】:I cannot pull data from JSON object- array after ajax post?我无法在 ajax 发布后从 JSON 对象数组中提取数据?
【发布时间】:2015-08-07 15:42:47
【问题描述】:

我的站点通过 Angular 的 $http post ok 传递数据通过 json 对象。

如果您想查看 console.logs 和响应,这是我的网站:

http://cpcarpet.com/#/

我决定在得到 x-form-ur 后尝试一下 appplication /json;编码可以正常工作,因为我最终会将它推送到 MongoDB。

然而,虽然简单的对象可以通过 req.body.____ 正常工作

更复杂的 json obejects + 数组不起作用。我还看到我的响应状态是网关超时 (504),但邮件通过 amazon SES 发送得很好。

这是我的 html 电子邮件,我尝试了以下变体,但都返回未定义。 Console.log 显示我的数据运行良好。

replyTo: req.body.user[0].email,

subject: 'Clean Path Contact from '+ req.body.user.fname + ' '+ req.body[0].user.phone, // REQUIRED.
text: req.body.user + '\n' + '\n'  + 'Customer Name address: ' + req.body.user.fname[0] + '\n' + 'Customer email address: ' + req.body.user[0].email + '\n' +'Customer Phone Number: ' + req.body.user[0].phone,
};

我的对象通常的样子:

      { user: {[
{
  "fName":"",
  "lName":"",

},
        {
            "name": "roomsclean1",
            "price": 27,
            "title": "Room(s) to clean",

          }, {
            "name": "roomsprotect1 ",
            "price": 62,
          }
    ]}

或者我只是使用对象数组 [{username: jim, lname: thomas}] 但 req.body[0].username 返回未定义。

与这样的对象对比:它们工作正常并且电子邮件接收数据:

{username: jim, lastname: thomas}

    req.body.username

【问题讨论】:

  • 你的结构实际上是错误的。 user 也是 object。所以它包含一个key:value 对,而是包含一个数组。

标签: javascript json angularjs express


【解决方案1】:

您的 JSON 结构错误,使用此结构并尝试使用 user[0].fname = demo

{
    "user": [
        {
            "fName": "demo",
            "lName": "dmo"
        },
        {
            "name": "roomsclean1",
            "price": 27,
            "title": "Room(s) to clean"
        },
        {
            "name": "roomsprotect1 ",
            "price": 62
        }
    ]
}

【讨论】:

  • 这与我使用的结构相同。不工作。我原本只有数组,但也没有用。
  • 将此 json 存储在变量中,例如 var s = jsonOb ; console.log(s.user[0].fName)
  • 我看不到你的回复。
【解决方案2】:
{
"user": [
    {
        "fName": "",
        "lName": ""
    },
    {
        "name": "roomsclean1",
        "price": 27,
        "title": "Room(s) to clean"
    },
    {
        "name": "roomsprotect1 ",
        "price": 62
    }
]

}

这应该是您的示例 json。现在,当您尝试获取用户数组的第零个元素时,您将能够获取它。

【讨论】:

  • 这与我使用的结构相同。不工作。我原本只有数组,但也没有用。
  • 尝试执行 console.log (req.body) 并查看它打印的内容并确保用户密钥是一个字符串。
  • 看来您发送的是数组而不是 JSON。
  • 我最近更改了它以尝试不同的东西。
  • 过去的选择是创建一个 json 并检查网络选项卡中的请求数据。复制表单数据并尝试使用 jsonlint.com 进行验证。
猜你喜欢
  • 1970-01-01
  • 2019-11-21
  • 2018-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-22
相关资源
最近更新 更多