使用Chrome:未捕获的SyntaxError:意外的令牌<

我得到这个错误未捕获SyntaxError:意外的令牌<从铬,但一切工作正常与FireFox。 我发现了许多类似的帖子,但没有解决方案。

所以我想知道是否有一种方法可以在构建完成后向浏览器发送第二个页面,并使用它自己的标题。 这个想法出现了,当我看到Firefox放置的时候,我在下面的函数中使用了html结束标记,而Chrome则将它放在结束标记之前。

基本上,我喜欢发送这样的顺序:

header('Content-Type: text/html; charset= utf-8');
<html></html>

header('Content-Type: text/javascript; charset= utf-8'); 
<script></script>

这是我的PHP脚本,我想取消注释标题代码,并从HTML页面独立发送它。

public static function jsShow($html)
{
    //header('Content-Type: text/javascript; charset= utf-8');
    echo "
        <script type="text/javascript">
        var e = document.getElementById('message');
        e.innerHTML = $html ;
        e.style.display = 'block';
        </script>";
}

这就是页面在Firefox中的样子,这是有效的:

</body>
</html>

<script type="text/javascript">
var e = document.getElementById('message');
e.innerHTML = <ul style="list-style: none; margin: 0; padding: 0;">
<li style="background-color: #0000FF; margin: 0;"><img src="/asset/icon/info.gif" alt="Info: " /> working</li>
<li style="background-color: #008000; margin: 0;"><img src="/asset/icon/success.gif" alt="Success: " /> Got it</li>
</ul>
 ;
e.style.display = 'block';

</script>

我认为我可以使用ob_start()和ob_end_flush(),但是你无法控制只有内容的标题。


...

        e.innerHTML = " . json_encode($html) . " ;

错误“Uncaught SyntaxError:Unexpected token <”对于您在第二个代码块中显示的内容是一个适当的错误,因为它是无效的JavaScript,并且在所有浏览器中都会失败。 您正在将e.innerHTML分配给一个未加引号的字符串:

e.innerHTML = <ul style="list-style: none; margin: 0; padding: 0;">
<li style="background-color: #0000FF; margin: 0;"><img src="/asset/icon/info.gif" alt="Info: " /> working</li>
<li style="background-color: #008000; margin: 0;"><img src="/asset/icon/success.gif" alt="Success: " /> Got it</li>
</ul>
 ;

请看“=”后面的“<”吗? - 这是意想不到的令牌。

您似乎并没有在该字符串中使用任何单引号,因此最简单的解决方法就是将其封装在单引号中。 我不知道PHP,但是像这样:

echo "
    <script type="text/javascript">
    var e = document.getElementById('message');
    e.innerHTML = '" . $html . "';
    e.style.display = 'block';
    </script>";

或者,无论PHP语法如何将此结果返回给浏览器:

e.innerHTML = '<ul style="list-style ...   </ul>';

顺便说一下,为相同的响应设置两个不同的头文件是没有意义的。 你要返回的是一个html页面,它恰好在底部有一个脚本块。 “text / javascript”内容类型更多的是链接的JS文件,它不包含html(没有脚本标签),只是JS。

链接地址: http://www.djcxy.com/p/8019.html

上一篇: With Chrome: Uncaught SyntaxError: Unexpected token <

下一篇: Eval() = Unexpected token : error