-1

以前、JSで「終了していない文字列リテラルの奇妙なエラー」が発生しています:SyntaxError:終了していない文字列リテラルの奇妙なエラー

改行がエスケープされているので、json_encodeを使用して修正します。

今、私はこれらの奇妙な結果を得ています、例えばこのJS変数(json_encodeで処理されます):

        cacheObj_open.handler='<pre class="brush: html;">"&lt;html&gt;\r\n&lt;body&gt;\r\n&lt;p&gt;Hello world.&lt;\/p&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;"</pre>';         

二重引用符で囲まれたコードで出力されます。

"<html>
<body>
<p>Hello world.</p>
</body>
</html>"

上記のコードはコンソールエラーなしで実行されます。しかし、以下のもの(json_encodeでも処理されます)はSyntaxErrorをスローします:missing; ステートメントエラーの前:

cacheObj_open.handler='<pre class="brush: html;">"\r\n&lt;?php\r\n$stmt = $dbh-&gt;prepare(&quot;SELECT * FROM REGISTRY where name = ?&quot;);\r\nif ($stmt-&gt;execute(array($_GET['name']))) {\r\n  while ($row = $stmt-&gt;fetch()) {\r\n    print_r($row);\r\n  }\r\n}\r\n?&gt;"</pre>';            

HTMLエンティティのソースコードをJS変数に出力するときにエラーを回避するための最良の方法は何ですか?json_encodeがいくつかの新しい行をエスケープすることは知っていますが(これは良い考えです)、上記の例に基づいて、それでもいくつかのコードに対してエラーをスローします。ご意見やご提案をいただければ幸いです。

PHP側でaddslashesを追加しようとしましたが、それでもエラーがスローされます。

4

1 に答える 1

0

この場合のエラーはにexecute(array($_GET['name']あります。ここでの単一引用符は、文字列全体を囲む引用符を閉じます。それらはバックスラッシュでエスケープする必要があります。

于 2013-01-05T09:25:44.650 に答える