【问题标题】:nodejs server not receiving any parameters from POST request [duplicate]nodejs服务器没有从POST请求中接收任何参数[重复]
【发布时间】:2017-08-23 16:50:22
【问题描述】:

server.js:

    var express = require('express');
    var app = express();
    loggedIn = {};

    app.use('/',express.static('www')); // static files

    app.listen(8080, function () {
      console.log('Port 8080!');
    });

    app.get('/user', function(req, res) {
        if (typeof req.param('user') != 'undefined') {
            user = req.param('user');
            res.status(200).send('Works');
        }
    });

    app.post('/user', function(req, res) {
            user = req.param('user');
            if (typeof users[user] != 'undefined') {
                return res.status(405).send('Access Forbidden');
            } else {
                   loggedIn[user] = "";
                   res.status(201).send('New User');
            }
        }
    });

client.js 请求:

    $.ajax({
        method: "GET",
        url: "/user",
        data: {"user" : user},
        dataType: "application/json",
        success: function(data) {
            // success
        },
        error: function() {
            // error case
        }
    });

    $.ajax({
        method: "POST",
        url: "/user",
        data: {"user" : user},
        dataType: "application/json",
        success: function(data) {
            // success
        },
        error: function() {
            // error case
        }
    });

即使 GET 请求完全按预期工作并在此处传递参数,但由于某种原因,post 请求没有。在萤火虫中,我注意到 POST 请求没有收到任何参数(POST 用户),而 GET 请求(GET 用户?用户 = XYZ)。我现在真的很茫然。

【问题讨论】:

    标签: javascript json node.js ajax express


    【解决方案1】:

    您必须告诉您的 express 应用解析请求正文

    app.use(express.bodyParser());
    

    对于快递4+

    var express    = require('express')
    var bodyParser = require('body-parser')
    
    var app = express()
    
    // parse application/json
    app.use(bodyParser.json())
    

    如需参考,请转到 https://expressjs.com/en/4x/api.html#req 并查看标题为 req.body

    的部分

    【讨论】:

    • 我试过这个,但它给了我需要单独安装中间件的错误(我在 express 4.0 上)。但是,当我尝试使用“npm install --save body-parser”安装它时,它不允许我(未知系统错误 -122,与 mkdir 有关)。
    • 终于设法安装 body-parser,在所有实例上使用 req.body. ,它仍然无法正常工作。它仍然挂起,而 POST 上的参数为零。当我尝试在请求中将 ContentType 强制为 application/json 时,它给了我“Unexpected token u”,这意味着我传递了一些未定义的东西,即使传递的数据已经明确定义,并且我已经检查过,所有相应的值都显示在 Firebug DOM 部分。我真的迷路了。
    • 服务器没有收到我的参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多