POST请求-不适用于Node and Express

问题描述 投票:0回答:2

我刚刚开始为一个简单的项目学习Node and Express,但是由于某种原因,我无法使POST正常工作。我的浏览器给我一个错误:无法发布/

感谢您提供有关此问题的任何帮助。谢谢。

我的代码在下面:


let express = require("express")
let ourApp = express()

ourApp.use(express.urlencoded({ extended: false }))

ourApp.get("/", function(req, res) {
  res.send(`
    <form action='/' method='POST'>
      <h2>What color is the sky on a clear and sunny day?</h2>
      <input name="skyColor" autocomplete="off">
      <button>Submit Answer</button>
    </form>
  `)
})

ourApp.post("/answer", function(req, res) {
  if (req.body.skyColor.toUpperCase() == "BLUE") {
    res.send(`
      <p>Congrats, that is the correct answer.</p>
      <a href="/">Back to homepage</a>
    `)
  } else {
    res.send(`
    <p>Sorry, that is incorrect.</p>
    <a href="/">Back to homepage</a>
    `)
  }
})

ourApp.get("/answer", function(req, res) {
  res.send("Are you lost there is nothing to see here.")
})

ourApp.listen(3000)

javascript node.js express post
2个回答
1
投票

对于"/"路线,您返回的form应该具有action="/answer",而不是action="/"

您的其他路线应保持不变,并且肯定可以使用。


ourApp.get("/", function(req, res) {
  res.send(`
    <form action='/answer' method='POST'>
      <h2>What color is the sky on a clear and sunny day?</h2>
      <input name="skyColor" autocomplete="off">
      <button>Submit Answer</button>
    </form>
  `)
})

-1
投票

您碰到了错误的端点。您应该发布到例如http://localhost:3000/answer

还有另外一件事,如果您想在主体中传递JSON数据,则需要使用主体解析器中间件。https://www.npmjs.com/package/body-parser

© www.soinside.com 2019 - 2024. All rights reserved.