Как передать серверный объект для работы с использованием javascript ejs - PullRequest
0 голосов
/ 05 июля 2019

Мне нужно знать, как передать объект на стороне сервера в качестве параметра функции javascript в javascript и ejs

У меня есть файл заголовка, функция 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

1 Ответ

0 голосов
/ 05 июля 2019

Это то, что я обычно делаю

  1. Вставьте свою переменную / объект на стороне сервера в HTML, добавив его к скрытому входному значению. Кроме того, не забудьте его зачеркнуть.

  2. В вашем 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>
...