版本:cocos2d-x 3.10 语言:C++
Node.js版本:6.2.1
在做这个示例的时候,书上Node.js版本还是是0.10.26,而网站上提供的版本已经到6了!当时想到cocos2d-x的版本更新,就感觉有些蛋疼。不过还好,编写代码的过程还算顺利,使用方法跟0版本的一模一样,这样多好,前向兼容。
不过在最后一个例子中还是发生了错误,如果书上的以它的版本是能运行的话,那这个应该算是更新之后js的问题了。
先说明一下情况。
首先使用以下的代码将参数发给服务端:
std::string content = "{\"cdate\":\"2012-1-1\",\"content\":\"haode\"}";
_sioClient->emit("create", content.c_str());
服务端以以下代码获取数据:
socket.on('create', function(data){ //创建的处理
var cdate = data.cdate;
var content = data.content;
/* 跟sqlite3交互略 */
});
获取的数据打印出来是未定义的,所以查看sqlite数据里面插入了数据,但是内容是NULL的。
这边是JSON转化的问题,原本字符串应该是能自动转换成JSON对象,但在这里不知道为什么就失败了。
以下是解决方法:
socket.on('create', function(data){ //创建的处理
var json_data = JSON.parse(data);
var cdate = json_data.cdate;
var content = json_data.content;
/* 跟sqlite3交互略 */
});
使用JSON.parse()显示转换就能获取成功了。
总结:
js中如果不能将字符串隐式转换成JSON对象,就使用JSON.parse()显示转换成JSON对象。
Node.js版本:6.2.1
在做这个示例的时候,书上Node.js版本还是是0.10.26,而网站上提供的版本已经到6了!当时想到cocos2d-x的版本更新,就感觉有些蛋疼。不过还好,编写代码的过程还算顺利,使用方法跟0版本的一模一样,这样多好,前向兼容。
不过在最后一个例子中还是发生了错误,如果书上的以它的版本是能运行的话,那这个应该算是更新之后js的问题了。
先说明一下情况。
首先使用以下的代码将参数发给服务端:
std::string content = "{\"cdate\":\"2012-1-1\",\"content\":\"haode\"}";
_sioClient->emit("create", content.c_str());
服务端以以下代码获取数据:
socket.on('create', function(data){ //创建的处理
var cdate = data.cdate;
var content = data.content;
/* 跟sqlite3交互略 */
});
获取的数据打印出来是未定义的,所以查看sqlite数据里面插入了数据,但是内容是NULL的。
这边是JSON转化的问题,原本字符串应该是能自动转换成JSON对象,但在这里不知道为什么就失败了。
以下是解决方法:
socket.on('create', function(data){ //创建的处理
var json_data = JSON.parse(data);
var cdate = json_data.cdate;
var content = json_data.content;
/* 跟sqlite3交互略 */
});
使用JSON.parse()显示转换就能获取成功了。
总结:
js中如果不能将字符串隐式转换成JSON对象,就使用JSON.parse()显示转换成JSON对象。