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

调用app.useapp.post(INSERT INTO db)获取表单值

IT培训 admin 2浏览 0评论

调用app.use / app.post(INSERT INTO db)获取表单值

我创建了一个app.use with express,以便在数据库中插入值。我想在用户点击注册时获取这些值。

我的表格:

<form class="form-signin" method="POST">
<h1 class="h3 mb-3 font-weight-normal">Register</h1>
<label for="inputEmail" id="lblEmail" class="sr-only">Email address</label>
<input type="email" id="inputEmail" class="form-control" placeholder="Email 
address" name="email" required autofocus>
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" id="inputPassword" class="form-control" 
placeholder="Password" name="passworf" required>
<label for="repeatInputPassword" class="sr-only">Repeat Password</label>
<input type="password" id="repeatinputPassword" class="form-control" 
placeholder="Repeat Password" required>
<label for="name" class="sr-only">Name</label>
<input type="name" id="inputName" class="form-control" placeholder="Name" 
name="name" required>
<label for="surname" class="sr-only">Surname</label>
<input type="surname" id="inputSurname" class="form-control" 
placeholder="Surname" name="surname" required>
<div class="checkbox mb-3">
</div>
<button class="btn btn-lg btn-primary btnblock-" 
type="submit">Register</button>
<p class="mt-5 mb-3 text-muted">&copy; 2017-2018</p>
</form>

app.use用于在数据库中插入值。我在下面使用MySQL:

var express = require('express');
var app = express();
var bodyParser = require('body-parser')
var http = require('http');
var urlencodedParser = bodyParser.urlencoded({extended: false});

app.use('/', urlencodedParser, function(req,res, next){
var adminUser = req.body.email;
var adminPass = req.body.password;
var adminName = req.body.name;
var adminSurname = req.body.surname;
console.log(req.body);
var sql = "INSERT INTO admins VALUES(null, ?, ?, ?, ?) ";
con.query(sql, [ adminUser, adminPass, adminName, adminSurname], 
  function(error, rows, fields){
    if(!!error) {
        console.log('Query Failed' + error.message);
    } else {
        console.log('Query Successful');
        console.log(rows.insertId);
        next();
    }
  });
 })

app.listen(5500);
回答如下:

您的表单必须将POST请求发送到您使用app.use(...)定义的相同路由。在这种情况下,您的表单是POSTing到它所在的相同路线,这意味着它需要在/路线上工作。

将您的app.use(...)更改为app.post(...),以便它只处理POST请求,然后使用以下命令从同一路径提供表单的html:

app.get('/', function(req, res) {
  res.sendFile(path-to-form);
})

见:https://codesandbox.io/s/won9jzj8k7

调用app.use / app.post(INSERT INTO db)获取表单值

我创建了一个app.use with express,以便在数据库中插入值。我想在用户点击注册时获取这些值。

我的表格:

<form class="form-signin" method="POST">
<h1 class="h3 mb-3 font-weight-normal">Register</h1>
<label for="inputEmail" id="lblEmail" class="sr-only">Email address</label>
<input type="email" id="inputEmail" class="form-control" placeholder="Email 
address" name="email" required autofocus>
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" id="inputPassword" class="form-control" 
placeholder="Password" name="passworf" required>
<label for="repeatInputPassword" class="sr-only">Repeat Password</label>
<input type="password" id="repeatinputPassword" class="form-control" 
placeholder="Repeat Password" required>
<label for="name" class="sr-only">Name</label>
<input type="name" id="inputName" class="form-control" placeholder="Name" 
name="name" required>
<label for="surname" class="sr-only">Surname</label>
<input type="surname" id="inputSurname" class="form-control" 
placeholder="Surname" name="surname" required>
<div class="checkbox mb-3">
</div>
<button class="btn btn-lg btn-primary btnblock-" 
type="submit">Register</button>
<p class="mt-5 mb-3 text-muted">&copy; 2017-2018</p>
</form>

app.use用于在数据库中插入值。我在下面使用MySQL:

var express = require('express');
var app = express();
var bodyParser = require('body-parser')
var http = require('http');
var urlencodedParser = bodyParser.urlencoded({extended: false});

app.use('/', urlencodedParser, function(req,res, next){
var adminUser = req.body.email;
var adminPass = req.body.password;
var adminName = req.body.name;
var adminSurname = req.body.surname;
console.log(req.body);
var sql = "INSERT INTO admins VALUES(null, ?, ?, ?, ?) ";
con.query(sql, [ adminUser, adminPass, adminName, adminSurname], 
  function(error, rows, fields){
    if(!!error) {
        console.log('Query Failed' + error.message);
    } else {
        console.log('Query Successful');
        console.log(rows.insertId);
        next();
    }
  });
 })

app.listen(5500);
回答如下:

您的表单必须将POST请求发送到您使用app.use(...)定义的相同路由。在这种情况下,您的表单是POSTing到它所在的相同路线,这意味着它需要在/路线上工作。

将您的app.use(...)更改为app.post(...),以便它只处理POST请求,然后使用以下命令从同一路径提供表单的html:

app.get('/', function(req, res) {
  res.sendFile(path-to-form);
})

见:https://codesandbox.io/s/won9jzj8k7

发布评论

评论列表 (0)

  1. 暂无评论