在JSON响应中换行的ILLEGAL标记?

时间:2013-09-03 03:28:28

标签: php javascript jquery ajax json

发回一些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 PHPthis 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);

1 个答案:

答案 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