node.js,将html附加到return函数中

时间:2014-02-26 14:21:45

标签: jquery html node.js express append

我正在使用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,对吗? 这是一个很好的方法吗?

2 个答案:

答案 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>