Как добавить неэкранированный строковый JSON в EJS?

#javascript #node.js #express #ejs

#javascript #node.js #выразить #ejs

Вопрос:

Я пытаюсь отправить с postMessage помощью JavaScript в шаблоне EJS, и мне нужно отправить простой строковый объект JSON, который выглядит следующим образом:

 { "id": "1234567890" }
 

Когда я пытаюсь передать этот объект в шаблоне EJS, двойные кавычки ( " ) экранируются amp;#34; . Вот мой шаблон:

 <script>
    if (window.opener) {
        window.opener.postMessage('<%= JSON.stringify(user) %>', "http://localhost:3000")
        window.close()
    }
</script>
 

Строковый объект превращается в это:

 amp;#34;{amp;#34;idamp;#34;:amp;#34;1234567890amp;#34;}amp;#34;
 

Что я могу сделать, чтобы предотвратить экранирование специальных символов EJS?

Ответ №1:

Оказывается, мне нужно заменить <%= на <%- , чтобы использовать неэкранированные символы.

Итак, мой код должен быть:

 <script>
    if (window.opener) {
        window.opener.postMessage('<%- JSON.stringify(user) %>', "http://localhost:3000")
        window.close()
    }
</script>
 

Источник: https://github.com/tj/ejs/tree/1.0.0#features