JSON响应中换行的非法标记

ILLEGAL token for line break in JSON response?

本文关键字:非法 换行 响应 JSON      更新时间:2023-09-26

在发送回一些JSON后,JavaScript错误显示:

Uncaught SyntaxError: Unexpected token ILLEGAL 

当我用一个换行符字符串来回应时,比如:

{ "call": "myFunction("<ul>↵    <li>Passwords are case-sensitive, that is the lower-case letter '"a'" is diffe...")" }

这是PHP,这是我得到的原始JSON响应。

是的,我do在JSON编码后覆盖一些JSON。我这样做是为了让客户端知道它必须调用一个函数。我会尝试其他选择。

当我发送一个没有换行的响应时,它不会出错如何修复断线我应该把它转换成什么?如何搜索和替换它?调用json_encode()时是否应该使用特殊标志?

我试过:

$json = str_replace("'r'n", "'n", $json);
$json = str_replace("'r",   "'n", $json);
$json = str_replace("'n",   "''n", $json);

我可以使用它:

<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