0

我想通过 JSON 将一个对象发布到 node.js 服务器。

Object 结构是嵌套的,并且从未成功在 node.js 服务器站点上正确接收和解析。


编辑2

我找到了解决方案:请参阅答案部分...


编辑

我发现

     console.log(body);

自身输出

val1=你好&val2%5Bval3%5D=世界

//= {"val1":"hello","val2[val3]":"world"}

奇怪的 JSON 方式


客户端.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 Chrome 开发者工具

目的

val1:“你好”

val2:对象

val3:“世界”


服务器.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"}
        });
    }

我明白

val2[val3] 是 val2.val3

然而,


问题 1

JSON.stringify 打印出来

{"val1":"hello","val2[val3]":"world"}

不是

{val1:“你好”,val2:{val3:“世界”}}

很丑,我不知道为什么会这样。


问题 2

我永远无法得到 {val3:"world"}

控制台.log(json.val3); //不明确的


任何人都可以解释,我如何将嵌套的 JSON 发布到 node.js 服务器?

谢谢。

4

1 回答 1

0

不要在 jQuery Ajax 上使用 JSON 类型的数据,而是使用 Stringified JSON

我创建了一个 WIKI

http://code.google.com/p/kenokabe/wiki/nestedJSONproblem

于 2012-05-04T05:43:36.980 回答