javascript - 带有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 中没有任何内容。正文,告诉我它的未定义,没有得到这样的名称和电子邮件)
有什么建议么?
解决方案
POST 请求的主体作为流异步接收。这意味着您需要中间件来解析它,然后才能对其数据进行任何处理。诸如body-parser
或之类的选项express.json
效果很好。
推荐阅读
- acumatica - 移动设备上的 DateTime 在行 RowSelected 后未显示
- haskell - 无法推断读取类型约束
- c# - 如何在单独线程上调用的主线程上运行委托方法?
- sql-server - 计数不同并返回具有最大日期的值
- r - 是否存在系统计算奇异的解决方案:R 中的倒数条件数 =...?
- php - PHP Post 变量的问题
- python - 如何使用模型中的其他字段初始化 Django 模型中的字段
- angular - 材料排序不适用于某些列
- django - django db_index=True 索引空值吗?
- php - 在 null 上调用成员函数 getPriceSum()