15
15

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 5 years have passed since last update.

PHPからJavascriptに値を渡すときの注意点(ダブルクオートとシングルクオート)

Last updated at Posted at 2018-05-03

(追記)

コメントにある通り、以下の形だとxssが出来てしまいます。

let value = JSON.parse("<?= json_encode($value) ?>");

$valueが日本語を含む配列の場合json_encode()によって\u7532のような文字に変換されてしまうため、JSON.parse()を使っていたのですが、

json_encode($value, JSON_UNESCAPED_UNICODE);

とすれば日本語はそのままになるため、JSON.parseは必要なくなりました。

本文

PHPからJavascriptに変数で値を渡す時以下のように書くと思います。

let value = JSON.parse("<?= json_encode($value) ?>");

この場合、json_encode($value)の中身に""が含まれていた場合、""""で囲う形になりエラーになってしまいます><

その場合は以下のようにシングルクオートに変えてあげればエラーは直ります。

let value = JSON.parse('<?= json_encode($value) ?>');

エラーが出た場合はエラーメッセージと変数の中身を確認して囲うクオートをダブルにするか、シングルにするかちゃんと選ぶ必要がありそうです。

15
15
2

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
15
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?