javascript - 按键访问 JS 对象的值
问题描述
我现在真的怀疑自己的想法,而且很困惑。
我正在构建一个小聊天应用程序,只是为了尝试一些东西......
为此,我有一个 MySQL 数据库,其中的表只存储带有 ID、消息内容、用户 ID 和时间戳的消息。
在显示聊天的页面上,然后我向后端发出 ajax 请求,它从数据库中返回数据,如下所示:
$messages = $db->exec('SELECT * FROM message ORDER BY ID DESC LIMIT 50');
echo json_encode($messages);
所以我从那里得到了最后 50 条消息,用 JSON 编码。
在页面上,我收到并解析它们:
messagesParsed = JSON.parse(messages);
所以现在,我在那个变量中得到的是这个(缩短一点)
[
{
"ID": "68",
"content": "oi",
"uid": "4",
"time": "2021-07-16 13:29:42"
},
{
"ID": "67",
"content": "io",
"uid": "4",
"time": "2021-07-16 13:29:42"
},
{
"ID": "66",
"content": "oibioboib",
"uid": "4",
"time": "2021-07-16 13:29:42"
},
{
"ID": "65",
"content": "iob",
"uid": "4",
"time": "2021-07-16 13:29:41"
},
{
"ID": "64",
"content": "b",
"uid": "4",
"time": "2021-07-16 13:29:41"
},
{
"ID": "63",
"content": "boi",
"uid": "4",
"time": "2021-07-16 13:29:41"
},
{
"ID": "62",
"content": "oibio",
"uid": "4",
"time": "2021-07-16 13:29:41"
}
]
然后,我反向循环遍历这个数组,目的是在页面的最底部显示最新消息:
for(var i = messagesParsed.length; i>=0; i--){
message = messagesParsed[i];
console.log(message);
}
到目前为止一切顺利,我现在得到了这个结果(存储在message
变量中)
{
"ID": "32",
"content": "fn",
"uid": "4",
"time": "2021-07-16 13:29:24"
}
奇怪的部分来了:我只想显示聊天消息的内容(起初)并尝试了 20 种不同的获取内容的变体,所以在 for 循环中,我做了类似的事情:
console.log(message.content); console.log(message["content"]); 控制台.log(消息[内容]);
还有一些其他疯狂的东西,但最后,我没有让控制台输出值。我唯一能到达的地方是 Cannot read property 'content' of undefined
我究竟做错了什么?这不像我第一次尝试访问 JS 对象中的某些内容,但似乎我完全迷失了这个对象。
解决方案
我认为问题在于您试图从超出范围的元素(messagesParsed.length)开始。尝试使用以下 - 它在 jsbin 上对我有用,并提供了您的测试数据
for(var i = messagesParsed.length - 1 ; i>=0; i--){
message = messagesParsed[i]
console.log(message.content)
}
推荐阅读
- linux - 在 MAC 上安装 bcftools 时如何解决此错误?C 的问题:[ploidy.o] 错误 1
- python - 当您需要不同的参数时,如何在类中使用 if/elif?
- c# - C# WebBrowser HTML Get ByClass 不起作用
- google-cloud-platform - 如何获取在 Google Cloud Repositories 中推送新修改的历史信息?
- r - 如何将此长格式数据帧转换为宽格式?
- node.js - 是否可以仅下载附加 blob 的特定部分?
- twilio - 通过 Composer 安装时 Twilio 错误包名称无效?
- python - 如何更改 tkinter 中按钮的可见性?
- asp.net-mvc - 我正在尝试使用 axios 从反应 js 登录到 ASP.NET 身份
- python - 无法获取字典以保存到 .txt 文件,而 Python 中没有语法错误