Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to redirect to another page after serving a post request in Node.js?

I want to save the data submitted by the user through a form using post method and then redirect it to another html page that I have on my local machine, is there any way to achieve this using Node.js or express how do I do that?

Here is the html code for form:

<html>
<head></head>
<body>
    <form action="post_register.html" method="POST">
        university name:<input type="text" name="name" placeholder="University name"><br>
        faculty Username:<input type="text" name="facul" placeholder="faculty username"><br>
        password:<input type="password" name="password" placeholder="password"><br>
        <button >register</button>
    </form>
</body>

and here is the javascript file:

var express = require("express");
var app = express();
var bodyparser=require("body-parser");
app.use(bodyparser.urlencoded({ extended: true }));

app.listen(3000);

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

app.post("/post_register",function(req,res)
 {
  console.log(req.body);
  res.end("yes");
});

all I want is that after pressing submit button the data is received and the user is redirected to post_register.html file.

like image 723
shashank chaudhary Avatar asked Jan 05 '19 12:01

shashank chaudhary


People also ask

How do I redirect POST Express?

The res. redirect() function lets you redirect the user to a different URL by sending an HTTP response with status 302. The HTTP client (browser, Axios, etc.) will then "follow" the redirect and send an HTTP request to the new URL as shown below.

How do I redirect data in node JS?

node-js-http-redirect-file-not-found.jscreateServer(function (req, res) { var filePath = req. url. substring(1); fs. readFile(filePath, function(err, data) { // if there is an error reading the file, redirect it to page-b.


1 Answers

I tested below code in my computer and it worked. I added res.redirect('/success') line to the post request handler and created an handler for /success path:

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

You can change /success path with your naming choice.

App.js

var express = require('express')
var app = express()
var bodyparser = require('body-parser')
app.use(bodyparser.urlencoded({ extended: true }))

app.listen(3000)

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

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

app.post('/register', function (req, res) {
  console.log(req.body)
  res.redirect('/success')
})

index.html

<html>
    <head></head>
    <body>
        <form method="post" action="/register">
            <input type="text" name="username">
            <input type="password" name="password">
            <input type="submit">
        </form>
    </body>
</html>

success.html

<html>
    <head></head>
    <body>
        <h1>Welcome</h1>
    </body>
</html>
like image 122
Mustafa İlhan Avatar answered Oct 27 '22 00:10

Mustafa İlhan