为什么这个“ res.redirect()”不重定向?

时间:2019-11-20 20:19:14

标签: html node.js express

我正在尝试使用nodejs和expressjs进行重定向,但是当我单击按钮时,仅URL更改没有任何反应。 我使用的是表格,表格中有一个按钮,该表格具有“ / failure”操作

const express = require("express")
const bodyparser = require("body-parser")
const request = require("request")

const app = express()

app.use(express.static("public"))
app.use(bodyparser.urlencoded({
  extended: true
}))

app.get("/", function (req, res) {
  res.sendFile(__dirname + "/signup.html")
})

app.post("/failure", function(req, res){
   res.redirect("/")
})

app.listen(3000, function () {
  console.log("Server is running on port 3000")
})  
<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">
	<title>Failure</title>
	<!-- Bootstrap core CSS -->
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
	integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>

<body>
	<div class="jumbotron jumbotron-fluid">
		<div class="container">
			<h1 class="display-4">Uh oh!</h1>
			<p class="lead">There was a problem signip you up Please try again or contact the developer!.</p>
			<form action="/failure" method="POST">
				<button class="btn btn-lg btn-warning" type="submit" name="button">Try again</button>
			</form>
		</div>
	</div>
</body>

</html>

2 个答案:

答案 0 :(得分:0)

您尝试过

res.redirect(307, '/test');

});

这将保留send方法,有关更多信息,您可以检查http://www.alanflavell.org.uk/www/post-redirect.html

答案 1 :(得分:0)

此行为是正确的。您正在发布到'/failure'路由,并且在该路由的处理程序内,它正在重定向以获取'/'路由处理程序,该处理程序将返回signup.html-这是您的起点。

您要发布到此:

app.post("/failure", function(req, res){
   res.redirect("/") // this is redirecting your route handler '/' which serves 'signup.html
})