【问题标题】:client can't parse JSon, what is wrong?客户端无法解析 JSon,怎么回事?
【发布时间】:2017-05-05 10:33:36
【问题描述】:

服务器端代码为:

app.post('/', function(req, res, next) {
    console.log(req.body);
    res.json({ "a": "128", "b": "7" });   
});

服务器端接收正确,打印为:

{ '{"type":"type","age":32,"married":false}': '' }

客户端为:

            $.ajax({
                    type: "POST",
                    url: self.serverURI,
                    data: JSON.stringify(self.gen_data()),
                    dataType: 'json',
                    success: function (result) 
                    {
                             //alert(result);
                             alert(JSON.parse(result));
                    },
                    error: function (xhr, ajaxOptions, thrownError) 
                    {
                            console.log(xhr);
                    }
                });

    self.gen_data=function()
    {   //create request data
        var obj = new Object();
        obj.type = "type";
        obj.age  = 32;
        obj.married = false;
        return obj;
    }

得到服务器响应后

 alert(result);

显示

[object object]

所以,我尝试解析

alert(JSON.parse(result));

并且没有弹出警报,所以假设它无法解析它。 我想交换里面包含数组的 JSon 数据,但是这些简单的测试不起作用。

有什么问题?谁能给我解释一下?

谢谢!

【问题讨论】:

  • 似乎您收到的是解析结果而不是字符串。
  • 试试alert(result.a);alert(JSON.stringify(result))
  • 你不能在警告框中显示javascript对象,最好使用console.log
  • 尝试 JSON.stringify 而不是解析
  • { '{"type":"type","age":32,"married":false}': '' } 真的很奇怪。这是一个对象,它有一个键,它是一个 json 对象的字符串表示形式......而且这个键的值是空的。

标签: jquery arrays node.js


【解决方案1】:

如果你写

alert(result);

并接收

[object object]

当您使用 res.json 时,它会将 content-type 设置为 json,以便浏览器在后台解析它。

所以你不能也不必使用 JSON.parse(...) 因为响应已经被解析了。

将其用作常规对象(认为有人做了JSON.parse(..)

尽量不要为此使用alert,而是使用console.log()。在控制台中,您可以看到对象及其属性。

【讨论】:

  • 发送请求时,我必须“JSON.stringify(Json-data)”使其成为字符串。如果我通过“res.json(json-data)”发送响应,它将作为 JSON 对象到达客户端。对吗?
  • @alim 是的,因为 content-type 是 json 它在后台进行字符串化和解析
【解决方案2】:

首先检查console.log(typeof result)等数据的类型,如果结果是对象或字符串,则可以根据您的要求进行处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 2017-12-25
    • 1970-01-01
    相关资源
    最近更新 更多