SyntaxError:unterminated string literal奇怪的错误

时间:2013-01-05 08:45:16

标签: javascript

我在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实体输出的源代码)输出到culprit变量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>

任何想法导致错误的原因是什么?任何修改建议都非常感谢!

1 个答案:

答案 0 :(得分:19)

如果没有转义(\),Javascript字符串不能跨越换行符。有关详细解答,请参阅此问题: