首页 > 解决方案 > 带有nodejs的“POST”表单未定义

问题描述

我需要将 HTML 页面中的输入数据发布到我的本地主机服务器中。

所以在我的 HTML 中,我使用的是“表单”

像那样:

<form action="/log-in",method="POST">
        <h3 style='font-family: Antic Slab; font-size: 23px;'>Log in to Your Account Now</h3>


        <div class="input-group mb-3">
          <div class="input-group-prepend">
            <span class="input-group-text" id="basic-addon1"><span class="material-icons">
                account_circle
              </span></span>

            <input name="Email1" style="width: 280px;" type="text" id="email" placeholder="Email or phone or username"
              title="Enter valid email with @, phone, or username">

          </div>
        </div>

        <div class="input-group mb-3">
          <div class="input-group-prepend">
            <span class="input-group-text" id="basic-addon1"><span class="material-icons">
                https
              </span></span>
            <input name="Password1" style="width:280px;" type="Password" id="password" placeholder="Password"
              pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}(?=.*[!@#$%^&*()-_=+\|[]{};:/?.><])"
              title="Must contain at least one number,Special charecter and one uppercase and lowercase letter, and at least 6 or more characters"><br>
          </div>
        </div>


        <div class="reset">
          <a id="Change"
            href="https://www.google.com/search?q=reset+password&oq=reset+password&aqs=chrome..69i57j69i59l2j69i60l2j69i61j69i60l2.2323j0j7&sourceid=chrome&ie=UTF-8">Forget
            Password?</a><br>
        </div>

        <div class="but">
          <input id="LGBTN" data-toggle="modal" data-target="#myModal" type="submit"
            class="btn btn-primary btn-lg btn-block" style='font-family: Antic Slab' value="Log-In"></button>
        </div>
      </form>

我这里有 2 个输入(电子邮件和密码),当我使用“GET”而不是 post 时,我看到传递的信息会抛出 URL,但是当我使用 POST 并且我的 NODEJS 文件看起来像这样时:

var http = require('http');
var url = require('url');
var fs= require('fs');
var express =require('express');
var app = express();

app.use(express.static(__dirname+ '/public'));

app.get('/log-in',function(req,res){
res.sendFile(__dirname+"/LogIn.html",);
});

)
app.post("/log-in",function(req,res){
  var email = req.body.Email1;
  res.redirect('/Contact-us');
 
})

app.listen(8080);

当我执行代码时,我得到一个未定义的错误,它说他找不到变量“Email1”。如果我执行代码并查看我在 Req 中的内容,我会看到“param”数组是空的,就像没有任何东西通过一样。

我对数据的处理方法是错误的吗?因为当使用“GET”而不是“POST”时,我确实在 URL 中看到了电子邮件和密码,但是在执行“POST”时它不起作用。

(我也尝试使用 Jquery 以这种方式发布一些数据:

$(document).ready(function () {
          $("#LGBTN").click(function () {
           $.post( "log-in", { name: "John", email: "test@test.com" } );
            });
              });

而且,req 中没有任何内容。正文,告诉我它的未定义,没有得到这样的名称和电子邮件)

有什么建议么?

标签: javascripthtmlnode.jsexpress

解决方案


POST 请求的主体作为流异步接收。这意味着您需要中间件来解析它,然后才能对其数据进行任何处理。诸如body-parser或之类的选项express.json效果很好。


推荐阅读