从res.end()读取数据

时间:2014-08-07 14:10:49

标签: json node.js express

我正在从服务器向客户端发送一个简单的数据。

app.post('/user', function (req, res) { 
    var userName = "John";
    res.end(JSON.stringify({"error":"", "user": userName}));
});


$.ajax({
    type: "POST",
    ...
    contentType : 'application/json',
    dataType: "json"
})
    .done(function(data) {
        // send join message
        var resData = JSON.parse(data);
        alert("hello"); // this doesn't show up
        });
    });
});

但是在浏览器控制台中,我收到此错误 - “Uncaught SyntaxError:Unexpected token o”。

如果我对内容JSON.stringifyJSON.parse,则可以正常使用。

alert(JSON.parse (JSON.stringify({"error":"", "user": userName})).user); 

此外,.done在没有来自服务器的数据有效负载的情况下工作正常,即alert("hello")有效。

所以,我猜测在res.end()内发送数据时发生了一些可疑的事情。请帮忙。

虽然你可以告诉我如何使用res.json()以及哪一个更好。

1 个答案:

答案 0 :(得分:0)

这里的问题是你在jQuery请求中设置了dataType: 'json'。这会导致服务器的响应自动解析为JSON,因此它将返回对象而不是原始服务器响应。