最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Req.Body未定义Node.js的POST请求

IT培训 admin 4浏览 0评论

Req.Body未定义Node.js的POST请求

我目前工作的一个简单的Node.js应用程序与MySQL数据库进行通信。

该应用程序从数据库中获取数据,并使用app.get把它放在一个表,它工作正常。

我遇到的问题是,使用app.post时req.body不返回任何东西。该应用程序将提交到数据库中,但由于req.body不返回任何东西,值是零。如果我换了req.body变量与硬编码的变量,例如它会发布实际值“12320”。

因此,我已经分离出的问题后,其使用req.body请求。

如果我控制台日志req.body它是空的。

我看了这个几乎所有计算器的问题,一直没能找到解决的办法。

我曾尝试重新安装体的解析器,快递,摩根和MySQL。

我试图重新创建一个新的目录中的应用程序,并重新安装模块。

我已尝试重命名变量柜面,这是具有一些影响(例如名称=“测试”,req.body.test)

但所有这一切是无济于事。

<form id="submit_missing" action="/submit_quote" method="POST" enctype="multipart/form-data">

<input type="text" id="submit_quote_id" name="submit_quote_id" placeholder="Quote ID">

<input type="text" id="submit_priority" name="submit_priority" placeholder="Priority" list="priority_list">

<input type="text" id="submit_customer" name="submit_customer" placeholder="Customer">

<input type="text" name="submit_who" id="submit_who" placeholder="Who's On it" list="purchasing">

<input type="text" id="submit_account_manager" name="submit_account_manager" placeholder="Account Manager" list="account_managers">

<button id="submit_quote">SUBMIT</button>

<form>
// server.js

const express = require('express')
const app = express()
const morgan = require('morgan')
const mysql = require('mysql')
const bodyParser = require('body-parser')

app.use(bodyParser.json({ type: '*' }))
app.use(bodyParser.urlencoded({ extended: true }))

app.use(express.static('./public'))
app.use(express.static('./files'))

const user = ***
const pass = ***

function getBoardConnection() {
  return mysql.createConnection({
    host: "localhost",
    port: "3306",
    user: user,
    password: pass,
    database: "board"
  })
}

app.get('/get_board_quotes', (req, res) => {
  const con = getBoardConnection()

  const queryString = "SELECT * FROM board_quotes WHERE quote_complete = '0'"
  con.query(queryString,(err, rows, fields) => {
    if (err) {
      console.log("Failed to query for /get_board_quotes : " + err)
    }
    console.log("Getting data from database for /get_board_quotes")
    res.json(rows)
  })

})


app.post('/submit_quote/', (req, res) => {
  console.log(req.body)
   quote_id = req.body.submit_quote_id
   priority = req.body.submit_priority
   customer = req.body.submit_customer
   who_quoted = req.body.submit_who
   account_manager = req.body.submit_account_manager
   type = ""


   queryString = "INSERT INTO board_quotes (quote_id, priority, customer, who_quoted, account_manager, quote_type) \
   VALUES (?, ?, ?, ?, ?, ?)"

   getBoardConnection().query(queryString, [quote_id, priority, customer, who_quoted, account_manager, type], (err, results, field) => {
     if (err) {
       console.log("Failed to insert new board order " + err)
       return res.redirect('/board/quotes.html')
     }
     console.log("Inserted a new board with id ")
     res.redirect('/board/quotes.html')
   })

})

app.listen(6565, () => {
  console.log("Server is running")
})

产量


Server is running
Getting data from database for /get_board_quotes
{}
Failed to insert new board order Error: ER_BAD_NULL_ERROR: Column 'quote_id' cannot be null

{}是用于执行console.log输出(req.body)

任何帮助将不胜感激。

回答如下:

您遇到的问题是,你已经设置enctype="multipart/form-data"<form> HTML标记。默认情况下,body-parserContent-Typemultipart/form-data头,这是你告诉一下浏览器发送解析机构。

有一个简单的方法来解决这个问题:我建议你只是没有设置enctype<form>元素,因为浏览器将默认为application/x-www-form-urlencoded,这是形式的身体body-parser的类型会默认解析。

另外您也可以尝试通过type: "multipart/form-data"当你调用bodyParser.urlencoded()一个选项,这将使body-parser解析发送给它的与内容类型什么。 (更正:body-parser实际上只是静静地失败对我来说,如果我告诉它解析multipart/form-data

这question/answer可能提供进一步的帮助。

Req.Body未定义Node.js的POST请求

我目前工作的一个简单的Node.js应用程序与MySQL数据库进行通信。

该应用程序从数据库中获取数据,并使用app.get把它放在一个表,它工作正常。

我遇到的问题是,使用app.post时req.body不返回任何东西。该应用程序将提交到数据库中,但由于req.body不返回任何东西,值是零。如果我换了req.body变量与硬编码的变量,例如它会发布实际值“12320”。

因此,我已经分离出的问题后,其使用req.body请求。

如果我控制台日志req.body它是空的。

我看了这个几乎所有计算器的问题,一直没能找到解决的办法。

我曾尝试重新安装体的解析器,快递,摩根和MySQL。

我试图重新创建一个新的目录中的应用程序,并重新安装模块。

我已尝试重命名变量柜面,这是具有一些影响(例如名称=“测试”,req.body.test)

但所有这一切是无济于事。

<form id="submit_missing" action="/submit_quote" method="POST" enctype="multipart/form-data">

<input type="text" id="submit_quote_id" name="submit_quote_id" placeholder="Quote ID">

<input type="text" id="submit_priority" name="submit_priority" placeholder="Priority" list="priority_list">

<input type="text" id="submit_customer" name="submit_customer" placeholder="Customer">

<input type="text" name="submit_who" id="submit_who" placeholder="Who's On it" list="purchasing">

<input type="text" id="submit_account_manager" name="submit_account_manager" placeholder="Account Manager" list="account_managers">

<button id="submit_quote">SUBMIT</button>

<form>
// server.js

const express = require('express')
const app = express()
const morgan = require('morgan')
const mysql = require('mysql')
const bodyParser = require('body-parser')

app.use(bodyParser.json({ type: '*' }))
app.use(bodyParser.urlencoded({ extended: true }))

app.use(express.static('./public'))
app.use(express.static('./files'))

const user = ***
const pass = ***

function getBoardConnection() {
  return mysql.createConnection({
    host: "localhost",
    port: "3306",
    user: user,
    password: pass,
    database: "board"
  })
}

app.get('/get_board_quotes', (req, res) => {
  const con = getBoardConnection()

  const queryString = "SELECT * FROM board_quotes WHERE quote_complete = '0'"
  con.query(queryString,(err, rows, fields) => {
    if (err) {
      console.log("Failed to query for /get_board_quotes : " + err)
    }
    console.log("Getting data from database for /get_board_quotes")
    res.json(rows)
  })

})


app.post('/submit_quote/', (req, res) => {
  console.log(req.body)
   quote_id = req.body.submit_quote_id
   priority = req.body.submit_priority
   customer = req.body.submit_customer
   who_quoted = req.body.submit_who
   account_manager = req.body.submit_account_manager
   type = ""


   queryString = "INSERT INTO board_quotes (quote_id, priority, customer, who_quoted, account_manager, quote_type) \
   VALUES (?, ?, ?, ?, ?, ?)"

   getBoardConnection().query(queryString, [quote_id, priority, customer, who_quoted, account_manager, type], (err, results, field) => {
     if (err) {
       console.log("Failed to insert new board order " + err)
       return res.redirect('/board/quotes.html')
     }
     console.log("Inserted a new board with id ")
     res.redirect('/board/quotes.html')
   })

})

app.listen(6565, () => {
  console.log("Server is running")
})

产量


Server is running
Getting data from database for /get_board_quotes
{}
Failed to insert new board order Error: ER_BAD_NULL_ERROR: Column 'quote_id' cannot be null

{}是用于执行console.log输出(req.body)

任何帮助将不胜感激。

回答如下:

您遇到的问题是,你已经设置enctype="multipart/form-data"<form> HTML标记。默认情况下,body-parserContent-Typemultipart/form-data头,这是你告诉一下浏览器发送解析机构。

有一个简单的方法来解决这个问题:我建议你只是没有设置enctype<form>元素,因为浏览器将默认为application/x-www-form-urlencoded,这是形式的身体body-parser的类型会默认解析。

另外您也可以尝试通过type: "multipart/form-data"当你调用bodyParser.urlencoded()一个选项,这将使body-parser解析发送给它的与内容类型什么。 (更正:body-parser实际上只是静静地失败对我来说,如果我告诉它解析multipart/form-data

这question/answer可能提供进一步的帮助。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论