JavaScript でこの奇妙な未終了文字列リテラル エラーが発生しました。「php」のような単一の単語のみを出力する場合( cache_open.handler 変数内)。エラーはありません。これはスクリプトであり、以下は正常に動作します。
<script>
var cache_open = {};
var cache_name_open={};
var handler='open';
cache_open.handler='<pre class="brush: html;">php</pre>';
cache_name_open.handler='PHP prepared statement';
</script>
ただし、コード (html エンティティ出力ソース コード) を犯人変数 cache_open.handler に出力すると、コンソールに未終了の文字列リテラル エラーが返されます。
これは、エラーを返す出力例です。
<script>
var cache_open = {};
var cache_name_open={};
var handler='open';
cacheObj_open.handler='<pre class="brush: html;">
<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) {
while ($row = $stmt->fetch()) {
print_r($row);
}
}
?></pre>';
cache_name_open.handler='PHP prepared statement';
</script>
最初は、返されるコードの複雑さだけだと思っていました (たとえば、引用符を含むなど)。しかし、単純な HTML コードでもエラーが返されます。
<script>
var cache_open = {};
var cache_name_open={};
var handler='open';
cacheObj_open.handler='<pre class="brush: html;"><html>
<body>
<p>Hello world.</p>
</body>
</html></pre>';
cache_name_open.handler='PHP prepared statement';
</script>
エラーの原因は何ですか? 変更の提案は大歓迎です。