【发布时间】:2016-03-29 14:33:52
【问题描述】:
我在 Laravel + socket.io 有一个项目,我需要访问正在广播的 json 中的特定字段。这是代码。
socket.js
redis.on('message', function(channel, message) {
message = JSON.parse(message);
io.emit(channel + ':' + message.event,message.data);
});
在我的客户端套接字中,我有这个。
socket.on("comment-channel:App\\Events\\CommentEvent", function(message){
alert(message.data);
});
那么这就成功了,提醒一下。
[{
"id": 136,
"content": "dffsadf",
"user_id": "1",
"task_id": "33",
"created_at": "2016-03-29 10:47:19",
"user": {
"id": 1,
"first_name": "Hulk",
"last_name": "Hogan",
"username": "",
"email": " hulhogan@yahoo.com",
"company_id": "1",
"role_id": "0",
"photo": "\/assets\/apps\/img\/photos\/lvrv5VOGRskwPHvFVakp.jpeg",
"position": "asdfsadf",
"phone": "+75843857834",
"city": "",
"country": "Singapore",
"timezone": "",
"created_at": "2016-03-10 04:16:24",
"updated_at": "2016-03-10 07:54:12",
"deleted_at": null
}
}]
然后当我尝试这个时
alert(message.data.task_id);
或
alert(message.data['task_id']);
我得到'未定义'..
如何访问 task_id?谢谢!!!!
【问题讨论】:
-
message.data是一个数组 -
从redis推送到socket的message.data是什么类型?您能够提醒它的事实已经表明您的数据不是json,而是一个字符串?
-
@Robert:是的,我认为你是对的,也许我会尝试传递未解析的数据。
标签: javascript json laravel-5 socket.io-redis