Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js NodeJS:访问表单数据_Node.js_Express_Form Data - Fatal编程技术网

Node.js NodeJS:访问表单数据

Node.js NodeJS:访问表单数据,node.js,express,form-data,Node.js,Express,Form Data,我无法从表单访问数据。就我所知,以下内容应该允许我从HTML表单中读取用户名和密码,但是,它没有按预期工作 感谢您的帮助 车把形状 …您需要使用req.body而不是req.query来访问来自表单正文的电子邮件和密码,因为内容类型是表单数据 此外,将电子邮件和密码作为查询参数发送是不好的做法,即使在受信任的源中使用。这是因为记录所有请求是一种常规做法,因此在查询中记录可以记录的基本细节并不是一种好方法。感谢@Jatin Mehrotra他的解决方案解决了我的问题这里有一句话:“你没有使用主体

我无法从表单访问数据。就我所知,以下内容应该允许我从HTML表单中读取用户名和密码,但是,它没有按预期工作

感谢您的帮助

车把形状


您需要使用
req.body
而不是req.query来访问来自表单正文的电子邮件和密码,因为内容类型是表单数据


此外,将电子邮件和密码作为查询参数发送是不好的做法,即使在受信任的源中使用。这是因为记录所有请求是一种常规做法,因此在查询中记录可以记录的基本细节并不是一种好方法。

感谢@Jatin Mehrotra他的解决方案解决了我的问题这里有一句话:“你没有使用主体解析器,这就是为什么你没有定义。使用这个应用程序。使用(express.urlcoded({extended:false})在你的app.js–Jatin Mehrotra“

中,你应该使用
req.body
而不是
req.query
。最后一个主要用于'GET'请求,你正在执行
POST
one。当我使用“req.body.username”时,我GET“无法获取未定义的属性'username'”“Query params”可以完美地与“post”请求一起使用。它们甚至经常一起使用。谢谢@Jerome。更新了答案。@L.Blommers您可以尝试将您的内容类型更新为“multipart/form data”并重试吗?您没有使用主体解析器,这就是您未定义的原因。使用此
app.use(express.urlcoded({extended:false}))
在你的app.js中
<form method="POST" action="/login" enctype="application/x-www-form-urlencoded">
            <table>
                <tr>
                    <td><input name="username" type="text" placeholder="User name" 
required autocomplete="username"/></td>
                </tr>

                <tr>
                    <td><input name="password" type="password" placeholder="Password" 
required autocomplete="current-password"/></td>
                </tr>

                <tr>
                    <td><input type="submit" value="Ok"/></td>
                </tr>
            </table>
        </form>
app.post("/login", (req, res) => {
    //Prepare login request
    const email = req.query.username
    const pass = req.query.password
    
    //Send login request
    request.post("http://localhost:3000/users/login?email=" + email + "&password=" + 
     pass, function (error, restResponse, body){
    
     //Handle response
        if(error){
            return res.status(400).send(error)
        }
        const user = body.user
        const token = body.token
    
        console.log("User: " + user + " Token: " + token)
        return res.render("admin/index")
    })   
})