我在从表单获取用户输入时遇到问题。 你能告诉我哪里出错吗?
这里是add-employee.html代码
<!DOCTYPE HTML>
<html>
<head>
<title>Add Employee</title>
<!--<script type="text/javascript" src="main.js"></script> -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<table>
<form action="/form" method="post">
<tr>
<th>
<label>Name:</label>
<input type="text" name="name">
</th>
<th>
<label>Designation:</label>
<input type="text" name="designation">
</th>
<th>
<label>PAN No:</label>
<input type="text" name="pan">
</th>
<th>
<label>Aadhar No:</label>
<input type="text" name="aadhar">
</th>
<th>
<label>Bank A/c:</label>
<input type="text" name="bank">
</th>
<th>
<label>Basic Salary:</label>
<input type="text" name="basicsalary">
</th>
<th>
<label>Other Allowance:</label>
<input type="text" name="allowance">
</th>
<th>
<label>ESI No:</label>
<input type="text" name="esi">
</th>
<th>
<label>UAN No:</label>
<input type="text" name="uan">
</th>
</tr>
<tr>
<td>
<input type="submit" name="submit_button">
</td>
</tr>
</form>
</table>
</body>
</html>
这里是我用来运行应用程序的server.js代码的链接。 https://github.com/silentarrowz/payroll/blob/master/server.js 当我提交表格时,我希望得到回复 &#39;雇员&#39; +名称+&#39;已添加&#39;
但我得到的结果为&#34;员工未定义添加&#34;。
现在,为什么会这样? 我哪里错了?
答案 0 :(得分:1)
在你的server.js中你有这条线。
app.use(bodyParser.json());
这意味着您的服务器只能读取请求中的JSON数据。但是,除非您使用javascript / jquery将表单发送到服务器,否则数据永远不会格式化为JSON。相反,浏览器使用urlencoded或multipart格式发送表单。 multipart通常仅在您使用表单发送文件时使用,因此很可能使用urlencoded格式。
这意味着您需要为urlencoded格式包含一个正文解析器。
只需更改它,以便我们在json解析器下面有urlencoded解析器,如下所示:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
但是,如果您要使用表单发送文件,则必须使用multiparty等模块解析请求。