nodejs服务器没有从POST请求中接收任何参数[重复]

Posted

技术标签:

【中文标题】nodejs服务器没有从POST请求中接收任何参数[重复]【英文标题】:nodejs server not receiving any parameters from POST request [duplicate] 【发布时间】: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)。我现在真的很茫然。

【问题讨论】:

【参考方案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 部分。我真的迷路了。 服务器没有收到我的参数

以上是关于nodejs服务器没有从POST请求中接收任何参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

nodejs 怎么获取post请求的json数据

nodejs从POST请求中获取原始正文[重复]

服务端接收不到ajax post请求的参数

post传中文上限

vue + nuxt.js - 如何读取从外部请求接收到的 POST 请求参数

从 Angular/NodeJS/ExpressJS 向 3rd 方 URL 的 POST 请求