【问题标题】:i am not able to fetch data from html controls using get method in nodejs and mongodb我无法使用 nodejs 和 mongodb 中的 get 方法从 html 控件中获取数据
【发布时间】:2018-01-04 06:54:28
【问题描述】:

代码问题

var userID = req.userid;
var pwd = req.pwd;
console.log("userid = " + userID + "pass = " + pwd);

控制台显示未定义的值而不是输入数据

控制台显示未定义的值而不是输入数据

我想从 html 文件中获取数据并使用 get 方法插入到 mongo 数据库中。但我无法从文本框中获取数据。

nodejs(index.js)中的代码

const express = require('express');
const path = require('path');
const bodyparser = require("body-parser");
const mongoose = require('mongoose');
const app = express();
app.use(bodyparser());
app.use(bodyparser.urlencoded({
    extended: false
}));
app.use(bodyparser.json());
app.set('port', (process.env.PORT || 1000));
mongoose.connect('mongodb://localhost/TrackDB');
var Schema = new mongoose.Schema({
    username: String
    , pass: String
});
var users = mongoose.model('users', Schema);
app.get("/register", function (req, res) {
    var userID = req.userid;
    var pwd = req.pwd;
    console.log("userid = " + userID + "pass = " + pwd);
    new users({
        username: userID
        , pass: pwd
    }).save(function (err, doc) {
        if (err) {
            res.json(err);
        }
        else res.send("Successfully Registerd!");
    });
    console.log("users = " + users);
});
app.get("/", (req, res) => {
    res.sendFile(path.join(__dirname, './public/index.html'));
});
app.listen(1000, () => {
    console.log("Server Start......");
});

HTML 页面 (index.html)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>LOGIN/REGISTER</title>
    <style>
        #container {
            width: 40%;
            margin: auto;
            border: 1px solid;
            padding: 10px;
            padding-left: 200px;
            border-radius: 10px;
        }
    </style>
</head>

<body>
    <div id="container">
        <h1>Register</h1>
        <form action="/register">
            <div id="register">
                <input type="text" name="userid" id="txt_userid" placeholder="Enter user id">
                <br>
                <input type="password" name="pwd" id="txt_pass" placeholder="Enter password">
                <br>
                <br>
                <button type="submit" id="btn_register">Register</button>
            </div>
        </form>
        <h1>Login</h1>
        <form action="/login">
            <br>
            <br>
            <div id="login">
                <input type="text" name="user" id="userid" placeholder="Enter user id">
                <br>
                <br>
                <input type="password" name="passw" id="pass" placeholder="Enter password">
                <br>
                <br>
                <button type="submit" id="btn_login">Login</button>
            </div>
        </form>
        <h1 id="msg"></h1> </div>
</body>

</html>

【问题讨论】:

  • 首先将您的方法更改为 POST,并且要获取发送的输入,您必须访问请求的主体对象,例如:req.body.userid

标签: javascript html node.js mongodb


【解决方案1】:

你必须在node.js中使用app.post方法。

并使用方法=帖子。

 <form action="/register" method="post">
     <div id="register">
     <input type="text" name="userid" id="txt_userid" placeholder="Enter user id">
     <br>
     <input type="password" name="pwd" id="txt_pass" placeholder="Enter password">
     <br>
     <br>
     <button type="submit" id="btn_register">Register</button>
     </div>
</form>

向节点发送数据使用 post、delete、put 方法。但是如果你想从节点取回数据,你可以使用.get() 方法。

我建议尝试打印 req(即console.log(req))。可能数据存储在 req.body 中。

【讨论】:

    【解决方案2】:

    您需要使用POST 请求,并且数据不会在req 对象中可用。取而代之的是req.body

    试试:

    var userID = req.body.userid;
    var pwd = req.body.pwd;
    console.log("userid = " + userID + "pass = " + pwd);
    

    【讨论】:

      【解决方案3】:

      试试这个代码

      var userID =req.query.userid;
      var pwd = req.query.pwd
      

      【讨论】:

        猜你喜欢
        • 2015-09-10
        • 2012-08-10
        • 1970-01-01
        • 2021-11-25
        • 1970-01-01
        • 2021-12-19
        • 2016-07-09
        • 1970-01-01
        • 2020-01-13
        相关资源
        最近更新 更多