我正在使用Node.js,Express,Jade和MongoDb进行Web应用程序。 我已经完成了一个用户必须在表单中放入确认代码的页面;这会调用一个检查代码是否正确的函数(checkConfirmationCode)。
我想附加一个类似&#34的html文本;你的代码是对还是错"进入确认页面。 功能是这样的:
exports.checkConfirmationCode = function(db) {
return function(req, res) {
var sentCode = req.body.confirmationCode;
var rightCode= '123456';
if(sentCode==rightCode)
//append html to the request page
else
//append html to the request page
};
};
这样做的最佳方法是什么? 我在想jquery,比如
$("#content").append("your code is right/wrong")
但它确实有用,我应该使用任何jquery npm,对吗? 这是一个很好的方法吗?
答案 0 :(得分:0)
正如tymeJV
所说,避免页面重新加载的唯一方法是绑定代码验证提交按钮,对快速端点执行ajax POST,如果代码正确或401,则返回200(未授权) )如果代码错误。
exports.checkConfirmationCode = function(db) {
return function(req, res) {
// presumably DB lookup for rightCode here
if(req.body.confirmationCode === rightCode) {
res.send(200);
} else {
res.send(401);
}
}
}
您的快速设置应该包含bodyParser
中间件作为POST的路由,假设端点为/confirmCode
:
app.use(express.bodyParser());
app.use(app.router);
app.post('/confirmCode', checkConfirmationCode(db));
答案 1 :(得分:0)
您的代码位于服务器端(node.js) 您希望将警报消息放在客户端的位置。
因此,您必须将结果发送给客户端,让客户端以某种方式显示消息。
所以,
1.通过Get / Post / socket.io / AJAX或任何你喜欢的内容发送用户写入服务器的内容
2.检查node.js中的代码是否正确
3.将结果作为http响应(整页正文加警报消息)发送给客户端,或者通过socket.io/AJAX异步发送结果
(仅限你使用socket.io/AJAX的情况)
4.当客户端收到结果时,通过jquery将结果消息附加到html。
这是socket.io
的一个实例服务器端
var io = require('socket.io');
io.sockets.on('connection',function(socket){
socket.on('formAnswer',function(data){
//check whether data.answer is correct answer or not
if(data.answer = collect){
io.sockets.socket(socket.id).emit({
message : 'your code is right'
});
}else{
io.sockets.socket(socket.id).emit({
message : 'your code is wrong'
});
}
});
});
客户端(模板文件,例如something.ejs)
<script>
var socket = io.connect();
socket.on('resultData',function(data){
$("#content").append(data.message);
});
</script>
//send what user wrote when submit is pushed.
<script>
$answerForm.submit(function(e){
socket.emit('formAnswer',{answer : 'what user wrote'});
});
</script>