!更新了新问题! Node JS用express读取表单输入

Posted

技术标签:

【中文标题】!更新了新问题! Node JS用express读取表单输入【英文标题】:!updated new issue! Node JS Read form input with express 【发布时间】:2016-10-02 10:21:52 【问题描述】:

新问题!

我得到了要显示的网页,并且能够检索和显示用户输入。 但是,我的代码只允许一个用户输入,如果我在 html 中添加另一个输入字段,其余的将是未定义的。 这是更新后的代码,它只会显示姓氏。

/*server.js*/
var express = require('express');
var bodyParser = require('body-parser');
var formHTML = require('./formHTML');

var app = express();
app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded( extended: true )); // support encoded bodies

app.get('/', function(req, res)
  var html = formHTML.html1;

  res.send(html);
);

app.post('/', function(req, res)
  var firstName = req.body.firstName;
  var lastName = req.body.lastName;
  var html = formHTML.html2;

  html = html.replace('firstName', firstName);
  html = html.replace('lastName', lastName);
  res.send(html);
);

app.listen(8080);


/*formHTML.js*/
var html1 = '<form action="/" method="post">' +
  'Enter your first name:' +
  '<input type="text" name="firstrName" placeholder="..." />' +
  '<br>' +
  'Enter your last name:' +
  '<input type="text" name="lastName" placeholder="..." />' +
  '<br>' +
  '<button type="submit">Submit</button>' +
  '</form>';

var html2 = 'Hello: firstName lastName .<br>' + '<a href="/">Try again.</a>';

exports.html1 = html1;
exports.html2 = html2;

我可以尝试检索两个用户输入吗? 谢谢!

================================================ ============================

我有以下代码,据说打开一个带有一个用户输入字段的网页,并使用 express 获取并发布显示用户的输入。

var express = require('express');
var bodyParser = require('body-parser');
var app = express();

app.use(bodyParser());

app.get('/', function(req, res)
  var html = '<form action="/" method="post">' +
    'Enter your name:' +
    '<input type="text" name="userName" placeholder="..." />' +
    '<br>' +
    '<button type="submit">Submit</button>' +
    '</form>';

  res.send(html);
);

app.post('/', function(req, res)
  var userName = req.body.userName;
  var html = 'Hello: ' + userName + '.<br>' +
    '<a href="/">Try again.</a>';
  res.send(html);
);

app.listen(80);

但是,我收到以下错误,我无法弄清楚如何让它工作。有人可以给我一个提示吗?谢谢!

Thu, 02 Jun 2016 15:10:23 GMT body-parser deprecated bodyParser: use server.js:20:9 Thu, 02 Jun 上的单个 json/urlencoded 中间件 2016 15:10:23 GMT 正文解析器已弃用未定义扩展:提供 ....\node_modules\body-parser\index.js:105:29

的扩展选项

【问题讨论】:

【参考方案1】:

bodyParser() 构造函数已被弃用(详情here),您现在需要使用这些:

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded(extended: true;);

extended 设置为 true 时,将使用 qs 库进行解析,设置为 false 时将使用 querystring。研究两者之间的区别以确定您要使用哪个,我一直使用qs 没有任何问题。

【讨论】:

改成上面的代码后,bodyParser 上又出现一个错误,提示“参数数量无效,预期为 2....” 哦 NVM,我猜这个错误不会影响功能。该程序仍然可以解决错误。【参考方案2】:

改变:

app.use(bodyParser());

与:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded(extended: false));

【讨论】:

以上是关于!更新了新问题! Node JS用express读取表单输入的主要内容,如果未能解决你的问题,请参考以下文章

如何使用在 node.js 上的方法和 express 来获取更新信息

如何在node express js上动态更新mysql中的行

Node.js Express POST 仅更改了路由器的输入

读 Node.js 源码深入理解 cjs 模块系统

读 Node.js 源码深入理解 cjs 模块系统

使用 Visual Studio 2012 express 进行 TypeScript、node.js 开发