2016-05-09 1 views
5

エクスプレスルートからクライアントにオブジェクトの配列を含むオブジェクトを送信すると、[オブジェクトオブジェクト]が表示されます私が行って、それを反復処理することができますので、それが何かする必要があります私はJSON.stringify(オブジェクト)の値として狂った文字列を取得します

{"messages":[{"content":"cool mane","creator":"joe"},{"content":"test 4","creator":"joe"},{"content":" ewgdqf","creator":"joe"}, 

...私はコンソールにこれをプリントアウトし、このコンソールメッセージ

var messages = "<%=(JSON.stringify(messages))%>" 
console.log(messages) 

でこのクレイジーな文字列を取得し、それを文字列化してみてください messages [0] .contentしかし、私は何かをさせることができないこのクレイジーな文字列を取得していますそれ...

私はそれをループしようとすると、それは単なる各文字を印刷します。これにより

var messages = "<%=(JSON.stringify(messages))%>" 
console.log(messages) 

+2

「<%= ... %>」のように見えるのは、出力をエンコードするHTMLです。テンプレートエンジンは、しばしばエンコーディングせずに出力する方法を提供します。いったんそれを修正したら、文字列も 'JSON.parse'する必要があります。オブジェクトをクライアントに渡すためのより良い方法があるかどうかはまだ不思議です。 –

+0

クライアントにデータを送信する他の方法はないと思いますが、JSON.parseは文字列化しても使用しようとするたびにエラーが表示されます – joe

+1

@TJCrowderそれは100種類のものを試した私が元のコードに戻ったときに偶然それらを保管した – joe

答えて

9

<%= ... %>を使用する場合は、EJSは、任意の出力をエスケープ/エンコードします。そのため、JSONの"&#34;としてエンコードされています。 According to this answerの場合は、代わりに<%- ... %>を使用してエスケープを防ぐことができます。

出力を文字列リテラルの中に入れる必要もありません。ネストされた引用符で問題を起こすことができるので、実際には悪いことです。

var messages = <%-JSON.stringify(messages)%>; 
+0

これは答えです – joe

+0

私の問題を解決するには感謝! – Ashbay

+0

ありがとう –

-1

は、これを変更してみ

var messages = JSON.stringify("<%=messages%>"); 
console.log(messages) 
+1

**文字列**また、 '<%=messages%>'の結果/出力はどうなりますか? –

+0

@FelixKling lol ...私の質問は、 'messages'の出力は何ですか? – evolutionxbox

+0

「[Object ] "私はちょうどそれを文字列化せずにコンソールする場合、それは[オブジェクトオブジェクト] – joe

関連する問題