1

当我尝试通过 chrome 控制台输出对象值时,我一直不确定。代码:

ws.on('message', function(message) {
     var JSONobj = {"cmd":"updatesb","name":"TestName"};
     console.log('JSON Name Value: %s', message.name); //<--does not work
     console.log('JSON Name Value: %s', JSONobj.name); //<----WORKS!!!!
});

ws.on 中的 message 参数通过 websocket 通信传递 {"cmd":"updatesb","name":"TestName"}。第一个控制台输出未定义。第二个输出是TestName。为什么 message.name 应该具有 TestName 的值时未定义,我如何从 message.name 获取值?

4

2 回答 2

5

听起来您的message参数是字符串,而不是对象。

您可以通过调用将该字符串解析为 JSON JSON.parse()

于 2013-06-26T02:35:43.187 回答
0

尝试:

 message.name = 'xxx';
 console.log('JSON Name Value: %s', message.name);

看看是否message.name成功。正如其他人指出的那样,message很可能不是您的想法。

也尝试console.log(message);检查输出。

此外,on处理程序可能接收的不仅仅是消息,因此处理程序实际上应该看起来像function(something_else, message),但是如果不知道 ws 是什么就很难知道。

于 2013-06-26T02:43:00.400 回答