2017-05-15 13 views
1

javascriptコードブロックにオブジェクトの配列を渡したいのですが、実際のJSONで"がたくさんあるようにhtmlエンコードするので苦労しています。JSONをpugのjavascript変数として渡します

基本的に私のルータはRedisのストアからJSONオブジェクトを取得し、私はテンプレートに渡ししようとしています:

redis.getBuffer('languages', function (err, result) { 
    res.render('manager/create-project', { title: 'Create Project', breadcrumbs: req.breadcrumbs(), languages: result }) 
}) 

私は私の変数に、このようにそれを割り当てます。

script. 
    $(document).ready(function() { 
     var languages = #{languages}; 

問題: 実際のjavascriptの変数言語は、以下に示すようにhtmlでエンコードされた文字列を取得します。

var languages = [{"id":"aa","text":"Afar"}] 

JSONコンテンツをjavascriptブロックに正しく渡すにはどうすればよいですか?

+0

へのリンクは、彼がそのようにした理由は、この質問をd​​ownvoted 1は私を説明することができます?たぶん私は私の質問を改善することができます。 – kentor

答えて

3

エスケープせずに補間する必要があります。これは、#の代わりに!を使用して実現できます。

たとえば、次のようにテンプレートを変更すると、あなたの問題を解決する必要があります。

script. 
    $(document).ready(function() { 
     var languages = !{languages}; 

参考のため、ここではdocs

+0

パーフェクト、私はそれを知らなかった! – kentor

+0

喜んで助けてください!ほとんどのテンプレート言語では、意図しないコードの実行(コメント内のスクリプトタグなど)を防ぐためにHTMLの自動エスケープ文字が使用されているため、必要なときにコントロールする方法を知っておくとよいでしょう – Nindaff

関連する問題