Javascript Node.js Express:重新访问注入.html文件的变量

Javascript Node.js Express:重新访问注入.html文件的变量,javascript,jquery,node.js,dom,express,Javascript,Jquery,Node.js,Dom,Express,我正在使用node.js/express和EJS(嵌入式javascript) 我像这样将一些变量注入.html页面 res.render('userHome.html', { user : user, teams : teams, user_db_name : user_db_name }); userHome.html内容: <html> <head&g

我正在使用node.js/express和EJS(嵌入式javascript)

我像这样将一些变量注入.html页面

res.render('userHome.html', {
                user : user,
                teams : teams,
                user_db_name : user_db_name
            });
userHome.html内容:

<html>
<head>
    <title>SASC Sparks Lineup Generator</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"</script>
    <script type="text/javascript" src="/fancy_scripts/userHomeController.js"></script>

</head>
<body>

<form  onsubmit="chooseImportTeamOrManualCreate(<%=user._id%>)" id="page1">
        <!-- <input id="createNewTeam" type="submit" value="Create New Team"/> -->
        <button type="submit" value="Create New Team" id="createNewTeamButton">Create New Team</button>

</form>
</body>
</html>
*尝试注入chooseImportTeamOrManualCreate()让我觉得有点傻,因为我知道这可能是荒谬的错误


如何将用户id传递到chooseImportTeamOrManualCreate()中,然后一旦进入chooseImportTeamOrManualCreate(),如何访问变量?可能用户变量已附加到文档/窗口DOM对象?

了解如何将其呈现到页面中:

假设
是一个包含“lk45jqlk43jakljf”的字符串,该字符串是特定用户的数据库密钥

现在想想:

  • 字符串通常如何由模板处理程序在页面中呈现
  • 带引号还是不带引号
你回答了吗?希望你做到了。这有什么关系

那么,表格会打电话给你

chooseImportTeamOrManualCreate(lk45jqlk43jakljf)
看起来可以吗?也许吧

如果
lk45jqlk43jakljf
是一个变量名,则会出现这种情况。但事实并非如此。它是要分配给形式参数
user\u id
的文本值,因此需要在括号内加引号,如
“lk45jqlk43jakljf”
。当存在提交时,您需要此调用,并使用引号:

chooseImportTeamOrManualCreate('lk45jqlk43jakljf')
由于正在渲染的行已使用双引号,因此我们必须在此处使用单引号,如下所示:

因此,无论
user.\u id
是什么,它在呈现到表单中时都会得到引号

有时,有人会给你一些糟糕的代码,这些代码必须要运行,而且没有分配时间来正确地重构它。不过,像这样的代码对于扩展重构项目来说似乎已经成熟了。这里有两件事被称为“糟糕的代码气味”:

  • 在HTML或变成HTML的模板中设置事件处理程序。相反,使用JS或jQuery。例如,请参见作者所写的内容:
  • 不要在HTML(JavaScript内联)中使用行为标记,这是调试的噩梦。>始终将事件与jQuery绑定以保持一致,以便更容易动态附加和删除事件>

    不使用jQuery?好的出于同样的原因,在普通Javascript中设置事件仍然比在HTML字符串中设置元素的onSomething属性要好

    下一个处理它的人,可能是你,必须做更多的搜索,以找到相关的代码位和它们的作用,遵守多种格式规则,等等。。。当代码的结构更接近常规实践时,问题就会消失

  • 在HTML或变成HTML的模板中嵌入Javascript变量数据。这实际上只是上述问题的重复
    谢谢你。最后几句话有点道理,但是举个例子(link?)会很有帮助。还有@Paul,注入的变量是否附加到DOM文档本身?这将是一个解决办法,可能与AJAX解决方案有关。应用程序任何页面上的客户端代码都应该知道它的
    userid
    。问题是怎么做。如果您愿意支持HTML5,那么localStorage看起来相当不错,因为一旦设置好,它就在那里,即使在刷新之后也是如此。当然,这并不能回答一开始它是如何到达那里的问题,而且它显然需要与页面一起来自服务器,而不是匿名请求。因此,也许我对AJAX的评论不适合设置用户ID。设置一个类似于
    的全局窗口。userid='
    比一大堆代码+一堆
    
    
    chooseImportTeamOrManualCreate('lk45jqlk43jakljf')