jQuery隐藏/显示无法在节点js中按预期方式工作

时间:2018-12-18 06:38:32

标签: javascript jquery node.js

我是Node js的新手,我正在构建一个用于学习目的的应用程序。

我陷入了困境,必须显示/隐藏成功和错误消息。

这里我在节点js中使用了jquery插件。

下面是代码:

 const jsdom = require("jsdom");
            const { JSDOM } = jsdom;
            const { window } = new JSDOM();
            const { document } = (new JSDOM('')).window;
            global.document = document;
            global.jQuery   =  require('jquery')(window);
            global.$        = global.jQuery;

注册代码:

 doRegistration : (req , res) => {

        let email = req.body.email;
        let password = req.body.password;
        let name = req.body.name;
        let confirm_password = req.body.confirm_password;
        let encryptedString = cryptr.encrypt(req.body.password);


        if(email== '' || password == '' || name ==''  || confirm_password =='')
        {
        message = "Fields are empty";
          let  list2 = [];
         list2.name = '';
        list2.email = '';
        if(name!='')
        {
        list2.name =name;
        }
        if(email!='')
        {
        list2.email = email;
        }

        req.flash('error', message);

        setTimeout(function(){  $("#err").hide(); },3000); //not working 
        res.locals.message = req.flash();
        res.render('registration.ejs' ,{
        code : '204',
        title: "Registration",
        details :list2,

        });

        }


        }

setTimeout(function(){$(“#err”)。hide();},3000);已添加此代码以隐藏错误消息。错误消息未隐藏。

我的代码有什么问题吗? 请提出建议。 谢谢

1 个答案:

答案 0 :(得分:1)

您有一堆代码(在您的第一个代码块中)设置了DOM和jQuery。您似乎从来没有用任何数据填充文档,但这不是您的最大问题。

在您的注册码中,您收集一些数据,将其注入registration.ejs中,然后将结果发送给客户端。

三秒钟后(此时HTTP请求已完成,并且浏览器已发送了所发送的内容),您调用了jQuery函数。此功能可在任何global.document上运行。

global.document似乎与registration.ejs没有任何关系,即使这样做,它也将更改服务器上当前的内容,而不会触及浏览器上的任何内容。

无法编写可以追溯到过去的服务器端JS,并更改三秒钟前服务器发送给浏览器的内容。

可以在模板文件中包含<script>元素,然后运行jQuery 客户端

不能编写服务器端代码来启动与浏览器的连接(HTTP与浏览器一起启动与请求的通信,服务器提供响应)告诉服务器显示一个改为使用其他文档。

可以使用WebSocket(或类似Comet或polling的不太优雅的方法),以便当页面在浏览器中加载时会启动与服务器的连接,然后向浏览器发送信号以运行某些客户端-隐藏元素的辅助代码。您仍然需要使用客户端代码进行隐藏,这仅允许您确定服务器上发生的何时。如果您只想稍等片刻,则不需要任何复杂的事情。