【发布时间】:2019-12-08 08:50:45
【问题描述】:
Express.js 不会在路径 URL 中使用 ?。
我该如何解决这个问题?
当我点击提交按钮时,我得到了这个:
http://localhost:1000/register?username=test&password=test123
但是,它与以下内容相同:
http://localhost:1000/register
我已经搜索了很多关于如何解决 URL 路径中 ? 的问题。并且有很多答案。但我只对 Express 和 JavaScript 有一定的了解。所以我需要一个简单的答案
我需要对我的<form></form> 元素做些什么吗?还是我必须修复我使用app.get(); 方法的方式?
快递服务器
app.get('/register?username=:username&password=:password', function(req, res) {
console.log('/register=?');
});
app.get('/register', function(req, res) {
console.log('/register);
});
HTML
<!DOCTYPE html>
<html lang="en">
<body>
<div class="content">
<div class="register">
<h1>Register</h1>
<form runat="server">
<label for="username">Username</label>
<input type="text" name="username" />
<label for="password">Password</label>
<input type="password" name="password" />
<input type="submit" value="Submit" />
</form>
</div>
</div>
</body>
</html>
【问题讨论】:
-
你必须使用
req.query属性 -
?不是请求路径的一部分,使用 Express 时,您不能将?放入路由路径。如果你这样做,它永远不会匹配。在 URL 中,?及其后面的内容称为查询参数。您将路由与路径匹配,然后使用req.query访问查询参数并采取相应措施。如果您尝试根据查询参数创建不同的路由处理程序,那么您可能设计错误,因为现在通常设计 URL 或路由处理程序。在您的路由处理程序中,您可以使用基于查询参数的代码进行分支。
标签: javascript html forms express form-submit