Javascript NodeJSON字符串显示为[object]

Javascript NodeJSON字符串显示为[object],javascript,ajax,json,node.js,Javascript,Ajax,Json,Node.js,前端 // js / jquery var content = { info : 'this is info', extra : 'more info' } $.ajax({ type: 'POST', url: '/tosave', data: content }); 节点 这将作为[object object]保存到文件中。在通过ajax请求发送内容之前,在内容上使用JSON.stringify()时,我会得到相同的结果。但是,如果我在node.j

前端

// js / jquery
var content = {
    info : 'this is info',
    extra : 'more info'
}
$.ajax({
    type: 'POST',
    url: '/tosave',
    data: content
}); 
节点

这将作为
[object object]
保存到文件中。在通过ajax请求发送内容之前,在内容上使用
JSON.stringify()
时,我会得到相同的结果。但是,如果我在node.js中将其字符串化,它会成功地保存为
{“info”:“这是信息”,“额外的”:“这是额外的”}


我的问题是为什么会这样?另外,在ajax请求之前,我如何将其转换为json字符串?

在这里,jquery和node似乎都非常有用

Jquery识别您正在发送一个对象,并自动转换为一种可以在发送之前传输的格式

节点识别您发送的内容,并在接收时对其进行解码,将其转换回对象

基本上这意味着你不必担心交通问题


有什么不喜欢的吗?

如果您真的想发送文本(例如,它看起来像正确的JSON,但实际上不是),并且不希望Node将其视为JSON并将其转换为对象,您可以尝试指定:

$.ajax({
    type: 'POST',
    url: '/tosave',
    data: content,
    processData: false
}); 
这将导致使用
application/x-www-form-urlencoded
发送数据,这可能会阻止节点将数据转换为JSON对象


不过,我建议在将其写入文件之前,只需将
req.body
字符串化即可
writeFile
不会为您这样做,因为我想您可以发送缓冲区而不是字符串。

在您的示例中,
writeFile
的正确语法肯定是:
fs.writeFile('/saved.txt',data,function(err){})
是的,我刚刚编辑了我的示例,这不是问题威尔,对象的默认字符串表示形式是
[object object]
。这是问题吗?如果希望在节点端将其作为字符串,可以在那里对其进行字符串化。node似乎只是识别出它是一个json字符串,并在进来的路上为您解码。我明白了,但我如何在没有实际数据的情况下将内容写入文件,而不是[object],所以我实际看到了数据?这在技术上是不正确的;jQuery将对象作为POST数据发送,而不是JSON。节点然后将接收到的POST数据转换为对象。
$.ajax({
    type: 'POST',
    url: '/tosave',
    data: content,
    processData: false
});