第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將變量傳遞給ExpressJS中的JavaScript

將變量傳遞給ExpressJS中的JavaScript

慕絲7291255 2019-11-29 10:34:25
我對此完全迷失了;我正在使用NodeJS來獲取JSON,我需要將變量傳遞給頁面并讓JavaScript使用數(shù)據(jù)。app.get('/test', function(req, res) {    res.render('testPage', {        myVar: 'My Data'    });那就是我的Express代碼(對于測試而言非常簡單);現(xiàn)在使用EJS,我想收集這些我知道要呈現(xiàn)在頁面上的數(shù)據(jù),<%= myVar %>但是我需要能夠在JavaScript中收集這些數(shù)據(jù)(如果可能在.js文件中),但現(xiàn)在只是在我嘗試過的“警告”框中顯示變量在翡翠中就像alert('!{myVar}')或!{JSON.stringify(myVar)}。我可以在EJS中做類似的事情嗎?我不需要像<input type=hidden>javascript 這樣的字段并采用該字段的值。如果有人可以幫助,不勝感激
查看完整描述

3 回答

?
慕森卡

TA貢獻1806條經(jīng)驗 獲得超8個贊

您可以使用此(客戶端):


<script>

  var myVar = <%- JSON.stringify(myVar) %>;

</script>

您還可以使用EJS渲染.js文件:


app.get('/test.js', function(req, res) {

  res.set('Content-Type', 'application/javascript');

  res.render('testPage', { myVar : ... });

});

但是,模板文件(testPage)仍需要具有.html擴展名,否則EJS將找不到該擴展名(除非您另行告訴Express)。


正如@ksloan在評論中指出的那樣:您必須小心myVar包含的內(nèi)容。如果其中包含用戶生成的內(nèi)容,則可能會使您的網(wǎng)站保持打開狀態(tài),以進行腳本注入攻擊。


防止這種情況發(fā)生的可能解決方案:


<script>

  function htmlDecode(input){

    var e = document.createElement('div');

    e.innerHTML = input;

    return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;

  }

  var myVar = JSON.parse(htmlDecode("<%= JSON.stringify(myVar) %>"));

</script>


查看完整回答
反對 回復 2019-11-29
?
慕田峪7331174

TA貢獻1828條經(jīng)驗 獲得超13個贊

如果您有更復雜的對象(例如數(shù)組),則可以執(zhí)行以下操作:


<% if (myVar) { %>

   <script>

      myVar = JSON.parse('<%- JSON.stringify(myVar) %>');

   </script>

<% } %>

否則,您之前看到的解決方案將不起作用


查看完整回答
反對 回復 2019-11-29
  • 3 回答
  • 0 關注
  • 695 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號