节点.js中的动态值

Dynamic values in Node.js

本文关键字:动态 js 节点      更新时间:2023-09-26

在节点中.js我正在通过 html 将值发送到 html

render('/abc', mydata)

"mydata"包含json_encoded格式。

我读这个是:

{{=mydata}}

现在,在同一个 html 页面中,我有这样的 javascript:

 <script>
 xyz(); 
  function xyz() { 
      // i need to read the "mydata" here.
  }
 </script>

我试过这个不起作用xyz({{=mydata}}),如何在节点中使用该动态数据.js??

几种可能性:

  • mydata实际上可能不是视图中的本地。

    Express 不能传递用作参数的变量的名称。仅引用它所引用Object的属性。

    因此,您可能需要围绕mydata创建一个新Object来为其命名属性:

    render('/abc', { mydata: mydata });
    
  • 输出可能由 {{= }} 进行 HTML 编码,这可能会导致 JavaScript 中的语法错误。

    因此,响应可能包含以下内容:

    xyz({&quot;foo&quot;:&quot;bar&quot;})
    

    而不是:

    xyz({"foo":"bar"})
    

    如何跳过 HTML 编码将取决于您与 Express 一起使用的视图引擎。但是,这可能就像用-替换=一样简单:

    xyz({{-mydata}})
    
  • mydata可能仍然是一个Object,而不是您似乎期望的json_encoded数据的String

    如果是这种情况,它可能正在使用标准.toString(),这将产生:

    xyz([object Object])
    

    而且,您可能仍然需要 stringify() mydata .

    xyz({{-JSON.stringify(mydata)}})