问题描述
我想通过JSON将对象发布到node.js服务器.
I want to POST an Object via JSON to node.js server.
对象结构是嵌套的,从未成功在node.js服务器站点上正确接收和解析.
The Object structure is nested, and never succeeded to receive and parse correctly on node.js server site.
EDIT2
我找到了解决方案:请参阅答案部分...
I found a solution: see the answer section...
编辑
我发现了
console.log(body);
自身输出
val1 = hello& val2%5Bval3%5D = world
val1=hello&val2%5Bval3%5D=world
//= {"val1":你好","val2 [val3]":世界"}
//= {"val1":"hello","val2[val3]":"world"}
怪异的JSON方式
client.js
client.js
var data ={val1:"hello",val2:{val3:"world"}};
console.log(data); // -> *1
$.ajax({
url:"/",
type:"POST",
dataType: 'json',
data:data,
success:function (res)
{
resHandler(res);
}
});
* 1 ChromeDevelopersTool
*1 ChromeDevelopersTool
对象
val1:你好"
val2:对象
val3:世界"
server.js
server.js
var onreq = function (req, res)
{
if(req.method == 'POST')
{
var body = '';
req.on('data', function (data)
{
body += data;
});
req.on('end', function ()
{
var json = qs.parse(body);
console.log(json.val1); //hello
console.log(json.val2); //undefined
console.log(json.val3); //undefined
console.log(JSON.stringify(json));
//{"val1":"hello","val2[val3]":"world"}
});
}
我了解
I understand
val2 [val3]是val2.val3
val2[val3]isval2.val3
但是,
问题1
JSON.stringify打印出来
JSON.stringify prints out
{"val1":你好","val2 [val3]":世界"}
{"val1":"hello","val2[val3]":"world"}
不是
{val1:你好",val2:{val3:世界"}}
{val1:"hello",val2:{val3:"world"}}
这很丑,我不知道为什么会这样.
It's ugly, and I don't know why it's like that.
问题2
我永远无法获得{val3:"world"}
I can never get {val3:"world"}
console.log(json.val3); //未定义
console.log(json.val3); //undefined
任何人都可以解释,如何将嵌套的JSON发布到node.js服务器?
Anyone can explain, and how can I POST a nested JSON to node.js server?
谢谢.
推荐答案
请勿在jQuery Ajax上使用JSON类型的数据,而应使用Stringified JSON
Do NOT use JSON typed data on jQuery Ajax, instead use Stringified JSON
我创建了WIKI
http://code.google.com/p/kenokabe/wiki/nestedJSONproblem
这篇关于JSON嵌套对象发布到node.js服务器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!