2012-02-13 23 views
13

これは完全に失われています。 NodeJSを使用してJSONを取得しています。この変数をページに渡し、JavaScriptでデータを使用する必要があります。ExpressJS JavaScriptへの変数の受け渡し

app.get('/test', function(req, res) { 
    res.render('testPage', { 
     myVar: 'My Data' 
    }); 

これは私のExpressコードです(テスト目的では非常に簡単です)。今私はページ上でレンダリングするために知って、このデータを収集したいJADEを使用すると、単に

p= myVar 

あるしかし、私は(可能であれば.jsファイル内)JavaScriptでこのデータを収集できるようにする必要がありますが、今のために誰もが非常に

+0

Node.JSやexpressについてはあまりよく分かりませんが、myVarの値が –

+0

を含むようにtestPageテンプレートを変更してください –

+0

HTMLを渡す場合は、Jade、Mustacheなどのテンプレートを使用してください。データを渡す場合は、JSONを使用し、レスポンスがContent-Type:application/jsonの場合、トランスポートにオブジェクトを解析させます。 –

答えて

10

を次のように試してみてください。

alert('!{myVar}') 

それは良いアイデアだJSONには、単なる文字列以上である場合には、データを符号化します。ティモシーとして

alert('!{JSON.stringify(myVar)}') 
+0

にJADE View変数を渡したいと思います。に渡すために。jsファイルは単に.jadeファイルに変数を作成するだけで済むので、.jsファイルに再度感謝します –

3

まあ、Javascriptを(およびV8を)理解される助けることができるならば、私は

alert(#{myVar}) 

そして他の多くを試してみましたが、警告ボックス内の変数からJSONをレンダリングする機能が組み込まれています表示しますJSONはJavascriptと構文的に互換性があります。

だからあなたがやろうと何をする最も簡単な方法は、次のようになります。

<script type="text/javascript>var myVar = #{JSON.stringify(myVar)};</script> 

そして、はい、あなたはジェイドテンプレートにHTMLを使用することができます。

-1

Now.jsを活用することができます。それは簡単にクライアント/サーバー側の変数をリアルタイムで共有することができます。

それをチェックアウト:http://www.nowjs.com/

11

は言った:

script 
    var myVar = !{JSON.stringify(myVar)}; 
    var myVar2 = !{JSON.stringify(myVar2)}; 

更新:

<script type="text/javascript>var myVar = #{JSON.stringify(myVar)};</script> 

これはまた、あなたがヒスイテンプレートでHTMLを書くのは好きではない場合で、次のように行うことができますエクスプレスについて4 scriptの代わりにscript.を使用すると、htmlではなくjavascriptとしてレンダリングされます。

0

私はパーティーに少し遅れていることは知っていますが、実際にこの問題を解決するために数ヶ月前にモジュール(JShare)を書いています。それをチェックしてください:https://npmjs.org/package/jshare

関連する問題