2016-10-31 13 views
1

私はそうのようなリテラルのテンプレート作成しています:クッキーの値をテンプレートリテラルに設定していますか?

const someVar = 'hello'  

const str = ` 
    Some random 
    multiline string with string interpolation: ${someVar} 
` 

そして私興亜アプリでは、私がやっている:

this.cookies.set('str', str) 

をどうやらそれは複数行の文字列を好きではない、それようにこのエラーが表示されます:

TypeError: argument value is invalid

これには何らかの方法がありますか?私の場合は、空白の形式を維持することが必要です。

答えて

2

これはテンプレートリテラルとは関係ありません。エラーが発生する頃には、改行を含む文字列があります。クッキー値に改行を付けることはできません。それを使用しているとき

this.cookies.set('str', JSON.stringify(str)); 

はもちろん、あなたがJSON.parseそれをする必要があります:これらの改行を維持する

おそらく最善のことはJSONを使用することです。

もちろん、JSONを使う必要はありません。

this.cookies.set('str', encodeURIComponent(str)); 

...そしてdecodeURIComponent(または文字列を消費しています何のために相当)でそれをデコード:あなたは、URIエンコーディングを使用することができます。

+0

何らかの理由で私は 'JSON.parse'は常に文字列をオブジェクト/配列リテラルとして解析したと考えました。私は非常に間違っていた、ありがとう! – saadq

+0

@saadq:あなたはそれを考えた理由があります。 :-) JSON仕様の初期のバージョンでは、実際にはトップレベルがオブジェクトまたは配列である必要がありました。しかし、かなり早い段階で、有効なJSON値を許可する方がより有用であることが明らかになりました。これがJavaScript仕様(およびJSON仕様)に組み込まれました。それは何年ものことですが、トップレベルがオブジェクトや配列でなければならないという考え方は、人々の思考の中で確立されています。 –

関連する問題