【发布时间】:2014-12-02 04:03:18
【问题描述】:
也许这是一个简单的话题,但我一直在尝试,但我无法做到这一点。我想将字符串转换为 javascript 对象。从现在开始,我尝试了多种形式来解决它。我正在使用节点,我想发出 AJAX 请求,服务器端必须获取请求变量并转换为 javascript 对象(使用其他对象进行扩展)。我向你展示我的代码是怎样的:
客户
var data = '{"addresses":"hola"}';
// make more and more.
makeTheRequest("POST",'users/update',"param="+JSON.stringify(data),'json',onSuccess, onError);
服务器
var param = eval('{' + req.body.param + '}');
console.log("\nuser.js-> router.post-> eval: " + param);
console.log("\nuser.js-> router.post-> req.param: " + req.body.param);
console.log("\nuser.js-> router.post-> JSON.parse: " + JSON.parse(req.body.param));
console.log("\nuser.js-> router.post-> user: " + req.session.user);
/*TODO: save on the database.... and more*/
res.send({success:0, error:1, result:"No USER. No SESSION"});
最终服务器日志结果
user.js-> router.post-> eval: {"addresses":"hola"}
user.js-> router.post-> req.param: "{\"addresses\":\"hola\"}"
user.js-> router.post-> JSON.parse: {"addresses":"hola"}
user.js-> router.post-> user: [object Object]
我要做的是调用 exentd 函数来合并两个对象,例如:req.session.user = extend(false, req.session.user, param);,但是参数的处理方式就像一个字母一个字母的数组-> 1:{, 2:", 3:a, 4:d, 5:d, 6:r, 7:e, 8:s, 9:s.. . 知道我做错了什么吗? 非常感谢。
【问题讨论】:
-
首先,当
data已经是JSON 文本时,为什么还要调用JSON.stringify(data)?
标签: javascript json node.js object extend