2014-10-04 38 views
0

我想從它從NodeJS路由發送到視圖的變量中捕獲值。 我知道的方式得到HTML(玉)這個值是:獲取由NodeJS路由發送的JS的值

#{name_var} 

但我想在JS(JQuery的)這個值,我也可以認爲是通過DOM(例如唯一的出路:創建一個具有隱藏值的div,稍後通過getElementById獲取值)。

但我認爲,這個數據,我發送到視圖中精巧的,它可能是有很大的安全問題......

你覺得呢?有沒有其他的「替代」呢?謝謝。

回答

2

我想你不想通過艱難的方式將值先放到dom元素中,然後再取出來處理。

您可以直接將值分配給js變量,就像您在html標記中一樣。

script(type='text/javascript'). 
    var somevar = "#{serversideValue}"; 

所以,雖然HTML呈現出翡翠的模板,它會被渲染爲

script(type='text/javascript'). 
    var somevar = "passedValue"; 

此外,根據從路由器傳遞的值,你可以選擇是否在將值分配給js變量(如#{serversideValue}!{serversideValue})時是否使用html編碼。

另外,如果你通過路由器變量傳遞一個完整的JSON對象,那麼你不能像上面看到的那樣直接分配它。一種方法是將JSON.stringify()值從路由器發送出去,並在客戶端JS中使用JSON.parse()來取回原始對象。

另外你可能想看看this stackoverflow question以瞭解我們現在討論的場景。

+0

完美。它在HTML文件中工作。你錯過了一些東西:你必須在第一行的末尾添加一個點。一個想要更多的東西...我已經檢查了這個代碼來將它添加到JQuery中(在$ document.ready()中)並且它不工作,因爲Jquery沒有得到值...只是將「#{serversideValue 「作爲一個字符串。這並不重要,但我想知道這是否可能。非常感謝你。 – danigonlinea 2014-10-04 12:11:18

+0

只需在瀏覽器中檢查html源代碼,它應該已經呈現了這個值,或者你是說它仍然是'「#{serversideValue}」'那裏? Jquery對這裏的情況沒有任何影響。 – mithunsatheesh 2014-10-04 12:17:20