在我的特快路由器中,我检查插入到表单上的数据是否有效,然后检查是否传递了表单数据。我想访问通过客户端的数据。在chat.ejs
视图上,我有一个chatroom.js
客户端文件,我想访问那里的数据而不必在script标签中访问它们。
我曾考虑过使用Ajax,但是我在StackOverflow上找到的唯一答案被标记为错误,那么我该如何解决?
router.js
module.exports=function(app) {
const express = require('express');
const router = express.Router();
const {check, validationResult} = require('express-validator');
const {matchedData} = require('express-validator/filter');
router.get('/', (req, res) => {
res.render('index', {
data: {},
errors: {}
})
});
router.post('/enter', [
check('username')
.isLength({min: 1})
.withMessage('Username is required').trim(),
check('room')//implement personalized check
], (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.render('index', {
data: req.body,
errors: errors.mapped()
})
}
else {
const data = matchedData(req);
return res.render('chat',{
user: data.username,
room:data.room
})
}
});
return router;
//MOVE TO SUPPORT
function find(name) {
return 1;
}
}
到目前为止,实际上客户端没有任何内容,仅发布我的观点似乎没有用。另外,我可以在client.ejs上使用Ajax来处理表单提交,但是我想保持这种状态并使用路由器文件处理路由。
答案 0 :(得分:0)
我最终在这样的index.ejs页面的脚本标签中创建了两个全局变量
<script>
var user = <%- JSON.stringify( user ) %>
var room = <%- JSON.stringify(room)%>;
</script>
然后我可以在下面链接的chatroom.js文件中访问它们