发回一些JSON后,JavaScript错误输出:
Uncaught SyntaxError: Unexpected token ILLEGAL
当我用带有换行符的字符串回复时:
{ "call": "myFunction("<ul>↵ <li>Passwords are case-sensitive, that is the lower-case letter \"a\" is diffe...")" }
This is the PHP和this is the raw JSON response I get back。
是的,执行在编码后覆盖了一些JSON。我已经这样做了,因此客户端知道它必须调用一个函数。我会尝试替代这个。
当我发送没有换行符的响应时,它不会出错。 如何修复换行符?我应该将其转换为什么?如何搜索和替换它?当我致电json_encode()
时,我应该使用特殊标志吗?
我试过了:
$json = str_replace("\r\n", "\n", $json);
$json = str_replace("\r", "\n", $json);
$json = str_replace("\n", "\\n", $json);
答案 0 :(得分:1)
我得到了它:
<script>
<?php
$json = '{ "call": "myFunction(\\\"<ul>
<li>Passwords are case-sensitive, that is the lower-case letter \\\"a\\\" is diffe...\\\")" }';
$json = str_replace("\n", "\\\n", $json);
echo "var str = '".$json."';";
?>
document.write(str);
str = JSON.parse(str);
alert(str.call);
</script>
在我的测试中,三次转义换行符n保持了html中的格式化,但是让JSON解析字符串。
-C