当我尝试通过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中的消息参数通过websocket通信传递{“cmd”:“updatesb”,“name”:“TestName”}。第一个控制台输出未定义。第二个输出是TestName。为什么message.name在应该具有TestName值时是未定义的,如何从message.name获取值?
答案 0 :(得分:5)
听起来你的message
参数是一个字符串,而不是一个对象。
您可以通过调用JSON.parse()
将该字符串解析为JSON。
答案 1 :(得分:0)
尝试:
message.name = 'xxx';
console.log('JSON Name Value: %s', message.name);
查看message.name
是否成功。正如其他人指出的那样,message
很可能不是你的想法。
同时尝试console.log(message);
并检查输出。
此外,on
处理程序可能只接收消息,因此处理程序实际上应该看起来像function(something_else, message)
,但很难知道ws是什么。