【问题标题】:Unable to read axios POST form data in express server. (Tried Using express.pasrer and body-parser)无法在 express 服务器中读取 axios POST 表单数据。 (尝试使用 express.pasrer 和 body-parser)
【发布时间】:2021-05-02 10:13:05
【问题描述】:

我一直在尝试在我的 nodejs 服务器上获取使用 axios 发送的表单数据。但我做不到。 如果我将相同的请求作为响应发回,那么我就可以查看数据。但不在服务器上。我不知道为什么会这样。 查看我的代码以更好地了解我的问题。

import React,{useState, useEffect} from "react";
--other imports--
import axios from 'axios';


function Hea() {

--Hooks--

 const handleSubmit = e => {
     e.preventDefault();
     console.log(userName + " " + passObj.userPassword + " " + passObj.userPassword2 + " " + userEmail)
    var data = {username: userName,
      password: passObj.userPassword,
      email: userEmail}
    var jsondata = JSON.stringify(data)
     axios.post('/register', 
         jsondata
     )
      .then(function (response) {
        console.log(response.config.data);
      })
      .catch(function (error) {
        console.log("error");
      });
 }

 function checkmatch(){
--Validate function--     
 function checkmail(){
--Validate function--

  return (
 --FORM--
}

export default Hea;

请注意,我控制台 response.config.data 我确实得到了正确的结果。 此外,我尝试在没有 JSON.stringify() 的情况下发送数据并使用一些标头。但结果是一样的。 这是nodejs代码。

const express = require('express')
const mongoose = require('mongoose');
const mainroutes = require('./routes/mainroutes')
const cors = require('cors')


const app = express()
const port = 3763

app.use(mainroutes)
app.use(express.static('public'))
app.use(cors())
app.use(express.json())
app.use(express.urlencoded({
  extended: true
}))

app.listen(port, () => {
  console.log(`App Running on port ${port}.`)
})

这是 routes.js 代码

var express = require('express')
var router = express.Router()

router.post('/register', function (req, res) {
    res.send(`<h1>Response from server ${req} </h1>`);
    console.log(req.body , req.data, req.config);
  })
  
  module.exports = router

现在,由于某种原因,这个

来自服务器 ${req} 的响应

`在我的反应应用程序中作为响应对象正确读取,在这里我也可以正确查看数据。但在服务器 req.body 、 req.data、 req.config 结果为 undefined undefined undefined。

【问题讨论】:

    标签: node.js reactjs express axios body-parser


    【解决方案1】:

    你能试试这个用formdata发送吗

        var formData = new FormData();
    
        formData.append("username", userName);
        formData.append("password" , passObj.userPassword);
        formData.append("email" , userEmail);
    
    
    axios.post('/register', formData).then(data =>
        console.log(data)
    ).catch(err => {
        console.log(err)
        return null
    })
    

    【讨论】:

      【解决方案2】:

      在服务器端,您需要在调用路由之前解析数据。这样,在express.json()express.urlencoded 中间件之后插入app.use(mainroutes)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-08
        • 2016-02-19
        • 2021-06-13
        • 1970-01-01
        • 2017-11-06
        • 1970-01-01
        • 2019-02-25
        • 2021-02-15
        相关资源
        最近更新 更多