以前,我在JS遇到“未终止的字符串字面错误”:SyntaxError: unterminated string literal strange error
我有点使用json_encode修复它,因为转换了换行符。
现在我得到了这些奇怪的结果,例如这个JS变量(用json_encode处理):
cacheObj_open.handler='<pre class="brush: html;">"<html>\r\n<body>\r\n<p>Hello world.<\/p>\r\n<\/body>\r\n<\/html>"</pre>';
将使用带有双引号的代码输出:
"<html>
<body>
<p>Hello world.</p>
</body>
</html>"
以上代码运行时没有控制台错误。但下面的那个(也用json_encode处理)会抛出 SyntaxError:missing;在声明之前错误:
cacheObj_open.handler='<pre class="brush: html;">"\r\n<?php\r\n$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");\r\nif ($stmt->execute(array($_GET['name']))) {\r\n while ($row = $stmt->fetch()) {\r\n print_r($row);\r\n }\r\n}\r\n?>"</pre>';
将HTML实体源代码输出到JS变量时,避免任何错误的最佳方法是什么?我知道json_encode会逃避一些新行(这是一个好主意),但基于上面的例子,它仍然会为某些代码抛出错误。我感谢任何意见和建议。
我曾尝试在PHP端添加addslashes,但它仍然会抛出错误。
答案 0 :(得分:0)
这种情况下的错误是execute(array($_GET['name']
,这里的单引号关闭整个字符串周围的引号。他们应该用反斜杠进行转义。