Node.js-在HTML/文档中查找传入参数的位置

Node.js-在HTML/文档中查找传入参数的位置,html,node.js,ejs,embedded-javascript,Html,Node.js,Ejs,Embedded Javascript,我的Node.js代码中有以下函数,用于呈现HTML页面并向其传递一个名为htmlParamObj exports.getPage = function (req, res, next) { var htmlParamObj= { propertyOne: 'yada', propertyTwo: 'yada yada' }; res.render('myPage.html',htmlParamObj); }; 我可以通过EJS

我的Node.js代码中有以下函数,用于呈现HTML页面并向其传递一个名为
htmlParamObj

exports.getPage = function (req, res, next) {

    var htmlParamObj= {
        propertyOne: 'yada',
        propertyTwo: 'yada yada'
       };
    res.render('myPage.html',htmlParamObj);

};

我可以通过EJS访问传入参数(
htmlParamObj
),比如:
,但我不知道如何通过文档本身访问
htmlParamObj
。我相信htmlParamOb'将被附加到html的文档中,但是我可以在文档中的哪个字段中找到它呢?它在头上,身体上,孩子身上吗?在哪里?

我找到的解决方案是在我的HTML中定义一个全局属性,如下所示:

<a name="team" value="<%=team._id%>"></a>

然后我可以在任何脚本中访问它,如下所示:

<script>
var team = document.getElementsByName('team');
</script>

var team=document.getElementsByName('team');
这将返回正确的对象。
然而,我不认为这是最好的答案,特别是考虑到任何全局定义的变量通常是一个坏主意。我希望对这个问题给出另一个答案。

传递的对象仅在呈现HTML时使用,不会以任何方式传递到浏览器

如果你需要在页面中输入数据,你需要把它放在那里

当我需要将复杂数据传递给客户端脚本时,我使用的解决方案是在HTML EJS文件顶部附近放置一个脚本标记,并用我的数据填充它。例如,我可能会将以下内容添加到我的模板中:

<script>
    window.MY_DATA = <%= JSON.stringify(myData) %>
</script>

window.MY_数据=
注意,由于JSON是javascript的一个子集,我可以使用
JSON.stringify
将数据序列化为适合放置在脚本标记中的形式,并将其分配给我想要的任何变量


这里的限制是您不能发送任何不能用
JSON.stringify
序列化的数据。这不是一个沉重的负担,但如果您想发送函数或其他对象,可能会绊倒您。

您是否尝试在客户端js上分配它
var p=“;”
是的,我可以这样做,但我需要反过来将它传递给一个不在html中的脚本,也许我可以用EJS的相同方式访问它,但我想知道变量是否也附加到文档中……我说的这个脚本不在html文件中,它是一个外部脚本,因此,我假设要么直接将变量传递到外部脚本,要么将变量附加到DOM,然后通过文档在外部脚本中访问它……本文试图解决相同的问题,这似乎与我发布的一个问题重复或相近:。嗨,Hargobind,请参阅下面的答案,我认为您不必对对象进行字符串化,为什么不让它保持原样呢?如果您认为值是字符串,那么这很好,问题是对于更复杂的数据,您需要某种方法来序列化和反序列化数据。另外,
JSON.stringify
提供了一种方便的方法来避免脚本标记中的任何安全问题,因为它将正确地转义任何奇数字符。如果您可以避免反序列化/序列化,我们将稍后向您反馈这一点,这将是一种优势,但您可能无法做到。总而言之,这很愚蠢。有没有一种方法可以从后端检索整个对象而不是前端的字符串?这就是我在服务器上使用
JSON.stringify
并将其无引号替换到脚本标记中的方法。当浏览器读取脚本标记时,它将解析JSON数据(因为JSON是JavaScript的严格子集),并将结果放入分配给它的任何变量中。