未定义文档

Document is not defined

本文关键字:文档 未定义      更新时间:2023-09-26

我一直在尝试为我正在创建的这个网站实现登录功能。我能够检查用户是否在数据库中。但是,如果用户不在数据库中,我想以以下形式显示一条消息;"找不到用户。"我正在尝试使用jQuery,但不断收到"文档未定义"错误。

我的js文件中的代码看起来像:

router.post('/login', function(req, res) {
    passport.authenticate('local', function(err, user, info) {
    if (err) { return next(err) }
        if (!user) {
            req.flash('error', info.message);
                $(document).ready(function() {
                    $("#label1").text("Hello world!");
                    $("#label1").css('color', 'red');
                });
                return res.redirect('/nouser')//called when no user found. to implement
        }
                    req.logIn(user, function(err) {
                        if (err) { return next(err); }
                        res.redirect(req.session.returnTo || '/');
                    });
        })(req, res);
});

我的表格是:

 <!-- Username & Password Login form -->
    <div class="user_login">
        <form id="login" action="/auth/login" method="post">
            <label id="label1">Email</label>
            <input name="email" type="email" />
            <br />
            <label>Password</label>
            <input name="password" type="password" />
            <br />
            <div class="action_btns">
                <div class="one_half"><a href="#" class="btn back_btn"><i class="fa fa-angle-double-left"></i> Back</a></div>
                 <input type="submit" class="btn btn_red" value="login">
            </div>
        </form>
        <a href="#" class="forgot_password">Forgot password?</a>
    </div>

我对网络编程非常陌生,任何帮助将不胜感激。谢谢。

"JavaScript 引用错误未定义"如前所述,有时只需定义一个变量即可解决问题。例如,给定上面 jQuery 的示例,我们可以调用 noConflict(( 来恢复变量。

$的旧引用在jQuery初始化期间保存;noConflict((只是恢复它们。

但这已经超出了本文的重点。

问题是,简单地恢复变量或为其提供定义,尤其是当它与第三方依赖项相关时,并不是那么容易。

相反,通常可以通过以下两种方式之一解决问题。

  1. 以正确的顺序加载库可以说,看到 ReferenceError 的最流行原因与我们的脚本引用尚未定义的变量这一事实有关。

要解决此问题,通常是文件加载顺序不正确的问题,如果错误是在具有自己的库的站点或 Web 应用程序的上下文中引发的,则尤其如此,则脚本的加载时间可能晚于您自己的。

这意味着脚本要么放在页面的 head 元素中,要么将它们加载到页面的页脚中。如果是这种情况,大多数框架和应用程序都提供了一个 API,用于设置文件的加载顺序、设置依赖项,然后定义它们在页面中的加载位置。

  1. 利用未定义的值另一个稍微涉及的示例涉及使用可选参数调用函数,然后检查在调用函数时是否定义了该参数。

例如,假设我们知道相关函数将在页面生命周期中的两个点被调用:

当 DOM 准备就绪时,以及可能未定义因变量时当页面加载并准备就绪时,以及可能已定义因变量时。为此,我们可以通过执行以下操作来利用 JavaScript 中的变量定义:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19函数 acmeReferenceError( valueExists ( { "使用严格";

if ( 未定义 === 值存在 ( {

/* If this is hit, then the function is being invoked
 * before the variable in question has been defined.
 */

} else {

/* If this particular conditional is hit, then the function
 * is being invoked after the value in question has
 * been defined.
 */

}

}查看由 GitHub 托管的原始引用错误未定义.js ❤但是请注意,我们不是在检查变量是真还是假,而是检查变量是否实际定义。

鉴于此,我们可以设置一个条件来执行在变量是否存在的情况下需要完成的任何工作。

最后,调用以下函数的方式如下所示:

假设你在定义值之前调用函数 acmeReferenceError((;。如果在定义值后调用函数,则可以调用 acmeReferenceError( foo (;其中 foo 是定义的值。最有可能的是,第一种情况将在 DOM 加载但页面尚未准备好时调用,第二种情况将在页面完全加载并准备就绪时调用。

第一个是最佳的,第二个不是最佳的在使用 JavaScript 时,按依赖顺序加载脚本总是一个更好的主意。话虽如此,我总是建议第一个选项是合适的,更优化的选项。

它不仅按照脚本排序的方式工作,而且需要更少的文档和基于 JavaScript 的代码,因为应用程序层的脚本顺序可以准确地显示和控制事物的工作方式。

但是,有时可能是不可能的,

或者环境的某些内容无法为您提供所需的控制,如果是这种情况,那么第二个选项是可行的解决方案。

但是,如果您最终选择了这条路线,我强烈建议在函数级别包含非常清晰的代码注释,以解释可选参数的用途,为什么存在它,以及应用程序的哪些方面需要执行类似操作。

相关文章: