简体   繁体   English

如何使用JavaScript EJS将服务器端对象传递给函数

[英]How to pass serverside object to function using javascript ejs

I need to know how to pass server side object as parameter to javascript function in javascript and ejs 我需要知道如何将服务器端对象作为参数传递给javascript和ejs中的javascript函数

I have header file, onclick function generate url but I need to pass serverside object as parameter to function 我有头文件,onclick函数生成url,但是我需要将服务器端对象作为参数传递给函数

server.js
var express = require('express');
var router = express.Router();
router.get('/', function (req, res) {
   var obj ={"contact" : "fs-xi-fs-men", "aboutus" : "guan-yu-men"}
   res.render('index.ejs', {lang: obj});
})

header.ejs
 <a class="nav-link" href="javascript:" onclick="redirect('about-us')">About Us</a> // pass server side obj i.e redirect(lang) 
<a class="nav-link" href="javascript:" onclick="redirect('contact')">Contact Us</a>


helper.js
function redirect(path){ // pass serverside object to function in js
    var urlpath = window.location.origin+"/"+en+"/"+path; //www.abc.com/en/fs-xi-fs-men 
    window.location.href = urlpath;
}

tried using
//index.ejs
<%- include('header', {tr: lang}) %> //not working

This is what I usually do 这就是我平常做的事

  1. Embed your server-side variable/object in the HTML by attaching it to a hidden input value. 通过将服务器端变量/对象附加到隐藏的输入值,将其嵌入HTML中。 Also, don't forget to stringify it. 另外,不要忘记将其分类。

  2. In your javascript, grab that input value, parse it back into an object and now you are able to use it in your javascript code! 在您的javascript中,获取该输入值,将其解析回一个对象,现在您就可以在javascript代码中使用它了!

<html>
  <input id="lang-input" type="hidden" value="<%= JSON.stringify(lang) %>">

  <!-- Include JQUERY -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script>

    // wait for HTML to fully load
    $(function() {
      // grab lang variable
      var lang = JSON.parse($('#lang-input').val());

      // now you have lang object and can do whatver you want!
    });
  </script>
</html>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM