0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JSON.parseができない時の解決方法

Last updated at Posted at 2021-02-04

はじめに

 エンコードした値をparseメソッドで連想配列に戻す際にSyntaxErrorが出て、解決に時間がかかったので備忘録として記事を書こうと思いました。何かアドバイスがあればコメントよろしくお願いします。

やりたかったこと

phpのコントローラーでjsonエンコードした値をアサイン

tplファイルのscriptタグの中で受け取る

JSON.parseメソッドでデコードし連想配列に戻す

出たエラー

JSON.parseメソッドでデコードした時にSyntaxError

原因

JSON.parseメソッドは解析する文字に特殊文字が入っていたのが原因。
phpでは、controllersでアサインする時にクロスサイトスクリプティング(XSS)対策で特殊文字に変換されるらしい。今回は「""」が「&quot」に変換されていました。

解決方法

特殊文字が原因なので、アサインする時のエスケープ処理を無効化すればいいので、

  JSON.parse('{{デコードする値 nofilter}}');

でエラーがでなくなりました。

nofilterを記述することで、HTMLをそのまま出力することができる。

他にもreplaceメソッドで特殊文字を置き換える方法でも解決できるみたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?