【问题标题】:Getting a JSON object using node.js使用 node.js 获取 JSON 对象
【发布时间】:2016-03-05 06:10:00
【问题描述】:

我正在制作一个简单的应用程序来了解 node.js 的工作原理。使用 jquery 和 ajax 我将 JSON 对象传递给 node.js 方法。问题是我不知道如何在 node.js 方法中获取特定的 JSON 数据。

客户端代码:

        $(document).ready(function(){

        $('#guardarVehiculo').click(function(){
            var car = JSON.stringify(agregarCarro());
            $.ajax({
                type: 'POST',
                data: car,
                url: '/saveCar',
                dataType: 'JSON'
            }).done(function( response ) {
                console.log(response);
            });
        });

    });

    function addCar(){
        var id = getById('id').value;
        var brand = getById('brand').value;
        var model = getById('model').value;
        var transmission = getById('automatic').checked ? getById('automatico').value : getById('mechanic').value;
        var comment = getById('comment').value;

        var car = new Car(id, brand, model, transmission, comment);

        return car;

    }

node.js 代码:

var express = require('express');
var fs = require('fs');
var app = express();

app.get('/', function(req, res){
    res.sendFile(__dirname + "/index.html");
});

app.post('/saveCar', function(req, res){
    console.log(req);
});

var server = app.listen(8000, function(){
  var host = server.address().address;
  var port = server.address().port;
  console.log('Server running at: ' + host + ':' + port);
});

提前致谢。

【问题讨论】:

  • 如果您要发布数据,您可能需要一个 BodyParser 为您执行此操作,否则在 req.query 中很容易获得 GET 数据
  • 感谢您的建议,现在我知道每种情况该使用什么了。

标签: javascript jquery json node.js


【解决方案1】:

您可以使用bodyParser 中间件

var app = express();
var bodyParser = require("body-parser");
app.use(bodyParser.json());

然后req.body 将包含解析后的 JSON 对象:

app.post('/saveCar', function(req, res) {
    console.log(req.body);
});

只有一个问题。在进行 AJAX 调用时,您需要设置正确的 Content-Type 标头,以便正文解析器知道它应该处理 JSON:

.ajax({
    type: 'POST',
    data: car,
    url: '/saveCar',
    contentType: 'application/json',
    dataType: 'JSON'
}).done(function( response ) {
    console.log(response);
});

【讨论】:

  • 我正是在寻找那个。非常感谢!
【解决方案2】:

回答以了解流程。

JSON 从客户端发布的数据在req.body 中接收。

req.body 包含在请求正文中提交的数据键值对。默认情况下,它是未定义的,并在您使用诸如body-parser 之类的正文解析中间件时填充。

使用正文解析中间件将req.body 填充为:

var app = express();
var bodyParser = require("body-parser");
app.use(bodyParser.json());

magic req.body 将服务器 JSON 数据,由客户端发送:

app.post('/save-car', function(req, res) {
    //hey! i am req.body and i have all data :)
});

【讨论】:

  • 感谢您的解释!
【解决方案3】:

使用 BodyParser 模块。

服务器:

var bodyParser = require("body-parser");
app.use(bodyParser.json());

路线:

cars{
  brand: "Tesla",
  model: "S-sport",
  color: "white"
}

app.post('/saveCar', function (req, res) {
    console.log(req.body);
    //to response back as Json.
    res.json(cars);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2016-10-01
    相关资源
    最近更新 更多