10

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;">
       &lt;?php
       $stmt = $dbh-&gt;prepare(&quot;SELECT * FROM REGISTRY where name = ?&quot;);
       if ($stmt-&gt;execute(array($_GET['name']))) {
       while ($row = $stmt-&gt;fetch()) {
       print_r($row);
       }
       }
       ?&gt;</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;">&lt;html&gt;
        &lt;body&gt;
        &lt;p&gt;Hello world.&lt;/p&gt;
        &lt;/body&gt;
        &lt;/html&gt;</pre>';           
    cache_name_open.handler='PHP prepared statement';           
        </script>

エラーの原因は何ですか? 変更の提案は大歓迎です。

4

1 に答える 1

20

Javascript文字列は、エスケープ()なしで改行を分割することはできません\。詳細な回答については、この質問を参照してください。

于 2013-01-05T08:48:41.797 に答える