以前、JSで「終了していない文字列リテラルの奇妙なエラー」が発生しています:SyntaxError:終了していない文字列リテラルの奇妙なエラー
改行がエスケープされているので、json_encodeを使用して修正します。
今、私はこれらの奇妙な結果を得ています、例えばこのJS変数(json_encodeで処理されます):
cacheObj_open.handler='<pre class="brush: html;">"<html>\r\n<body>\r\n<p>Hello world.<\/p>\r\n<\/body>\r\n<\/html>"</pre>';
二重引用符で囲まれたコードで出力されます。
"<html>
<body>
<p>Hello world.</p>
</body>
</html>"
上記のコードはコンソールエラーなしで実行されます。しかし、以下のもの(json_encodeでも処理されます)はSyntaxErrorをスローします:missing; ステートメントエラーの前:
cacheObj_open.handler='<pre class="brush: html;">"\r\n<?php\r\n$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");\r\nif ($stmt->execute(array($_GET['name']))) {\r\n while ($row = $stmt->fetch()) {\r\n print_r($row);\r\n }\r\n}\r\n?>"</pre>';
HTMLエンティティのソースコードをJS変数に出力するときにエラーを回避するための最良の方法は何ですか?json_encodeがいくつかの新しい行をエスケープすることは知っていますが(これは良い考えです)、上記の例に基づいて、それでもいくつかのコードに対してエラーをスローします。ご意見やご提案をいただければ幸いです。
PHP側でaddslashesを追加しようとしましたが、それでもエラーがスローされます。