Node.js:如何交换 JSON 对象 [重复]

Posted

技术标签:

【中文标题】Node.js:如何交换 JSON 对象 [重复]【英文标题】:Node.js: How to exchange a JSON object [duplicate] 【发布时间】:2017-05-11 23:32:27 【问题描述】:

我的目的是将一个 JSON 对象从客户端发送到服务器。所以考虑到客户的以下细节:

   <script>
        var onClickFunct = function() 
            trial1.send(
                "test": $("#input_test").val(),
            );
        
    </script>

其中 input_test 是我的标签在 html 页面中的名称。 并且使用以下代码实现了 trial1:

var trial1 = 
    //notifica al server una nuova registrazione
    send: function(data)
        $.getJSON('/tst',data);
    

我的服务器看不到对象;事实上,如果我打印 req.params 它会显示“未定义”。

app.get('/tst',function(req)
    console.log(req.params);
);

我的 index.html 需要以下脚本 &lt;script src="https://code.jquery.com/jquery-1.10.2.js"&gt;&lt;/script&gt;

而服务器只需要express

【问题讨论】:

你能上传完整的服务器代码吗,它有没有 const bodyParser = require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded(extended: true )); 【参考方案1】:
$ npm install --save body-parser

然后:

var bodyParser = require('body-parser')
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded(     // to support URL-encoded bodies
  extended: true
));

您的端点应如下所示:

app.post('/tst',function(req)

    console.log(req.body);
);

然后使用 Jquery Post:

$.post('/tst',data);

body 解析器安装示例取自这里:

How to retrieve POST query parameters?

希望对你有帮助:)

【讨论】:

我发现它非常有用;我试过了,它也在工作。只是不同的是,现在通信是加密的,对吗? 没有完全加密,唯一真正的技术区别(如果我错了,请更正这篇文章)是 GET 对查询字符串的限制要短得多。实际上,GET 用于从服务器获取某些内容时。 GET 调用不应对服务器造成副作用。 POST 是当你打算在服务器上发送一些东西并让它做一些事情的时候。【参考方案2】:

尝试改变:

app.get('/tst',function(req)
    console.log(req.params);
);

到:

app.get('/tst',function(req)
    console.log(req.query);
);

req.params 用于路由中的参数,例如:

app.get('/test/:name', function (req, res) 
    console.log(req.params);
);

当您访问 /test/abc 时,req.params.name 将是 "abc"

$.getJSON() 将数据作为查询参数发送,参见:

http://api.jquery.com/jquery.getjson/

对于查询参数,您使用res.query

如果它是一个 POST 请求,并且您想访问在请求正文中传递的参数,那么您将使用 req.body(但您需要使用 bodyParser 中间件)。

请记住仅将 GET 用于读取操作,在查询参数中您指定要获取的内容或以什么形式、什么顺序等。

如果您传递数据以存储在数据库或类似的东西中,则使用 POST 或 PUT 并在请求正文中传递数据(可以是 JSON)。

【讨论】:

以上是关于Node.js:如何交换 JSON 对象 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

node.js - 按值对 JSON 对象进行排序 [重复]

Coffeescript / Node.js:如何从对象数组中删除重复对象?

Node.js / Express / Mongoose - 如何发送 JSON 以及对象视图?

如何使用node.js将多个json的对象合并到一个json文件中

如何使用 node.js 访问 json 对象的子元素

如何从 json 响应中连接来自不同对象数组的值? Node.js、Discord.js