Javascript Node.js Express:重新访问注入.html文件的变量
我正在使用node.js/express和EJS(嵌入式javascript) 我像这样将一些变量注入.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
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
是什么,它在呈现到表单中时都会得到引号
有时,有人会给你一些糟糕的代码,这些代码必须要运行,而且没有分配时间来正确地重构它。不过,像这样的代码对于扩展重构项目来说似乎已经成熟了。这里有两件事被称为“糟糕的代码气味”:
不使用jQuery?好的出于同样的原因,在普通Javascript中设置事件仍然比在HTML字符串中设置元素的onSomething属性要好
下一个处理它的人,可能是你,必须做更多的搜索,以找到相关的代码位和它们的作用,遵守多种格式规则,等等。。。当代码的结构更接近常规实践时,问题就会消失
谢谢你。最后几句话有点道理,但是举个例子(link?)会很有帮助。还有@Paul,注入的变量是否附加到DOM文档本身?这将是一个解决办法,可能与AJAX解决方案有关。应用程序任何页面上的客户端代码都应该知道它的
userid
。问题是怎么做。如果您愿意支持HTML5,那么localStorage看起来相当不错,因为一旦设置好,它就在那里,即使在刷新之后也是如此。当然,这并不能回答一开始它是如何到达那里的问题,而且它显然需要与页面一起来自服务器,而不是匿名请求。因此,也许我对AJAX的评论不适合设置用户ID。设置一个类似于的全局窗口。userid='
比一大堆代码+一堆
chooseImportTeamOrManualCreate('lk45jqlk43jakljf')