【问题标题】:bad control character error in json parsejson 解析中的错误控制字符错误
【发布时间】:2013-10-24 18:16:06
【问题描述】:

解析 JSON 对象时,我在 Firebug 控制台中收到“控制字符错误”错误。这个网站有很多问题和解决方案;但我无法解决这个问题。我相信我在做一些愚蠢的事情。请指出我的错误。

JS 小提琴:http://jsfiddle.net/Purus/Eqz2r/

如果我们将 json 数据更改为纯文本而不是 html 标签,它就可以工作。

错误:

SyntaxError: JSON.parse: bad control character in string literal
someVal = JSON.parse(sign);

注意:

  • JSON 数据是使用 json_encode 从 PHP 函数获取的 功能。
  • json 输出在 jsonlint 中看起来有效

下面是我用过的代码。

$(document).ready(function () {
   var sign = '{"data":"<br\/><br\/>----------<br \/>\r\nFrom Yahoo Team<br \/>\r\n<a href=\"http:\/\/localhost\/base\/1-yahoo-logo.jpg\" target=\"_blank\"><img style=\"padding: 5px;\" src=\"http:\/\/localhost\/plugins\/1-yahoo-logo.jpg\" height=\"120\" width=\"196\" \/><\/a>"}';

   someVal = JSON.parse(sign);
   $(".demo").append(someVal.data);
});

【问题讨论】:

    标签: javascript jquery json


    【解决方案1】:

    你需要逃脱你的逃脱:)

    使用双精度 \\ 而不是 \

    http://jsfiddle.net/Eqz2r/2/

    【讨论】:

    • 谢谢。但是在 JS 中传递 JSON 之前,我如何在 PHP 中做到这一点。
    • 其实,在服务器端或js端替换我猜没关系?
    • 这是个好消息。我不明白用什么代替什么。在您的小提琴中,我看到了 sign.replace("\n", "\n") ,我无法自行替换相同的字符。
    • 当我尝试 sign.replace("\", "\\") 它说非法字符。我对JS很陌生。请多多包涵。
    • 那是从你的小提琴中继承下来的;)。尝试在 php 端执行此操作,我不熟悉 php,但您需要将单斜杠换成双斜杠(试试这个我发现:str_replace("\\", "\\\\", $data);
    【解决方案2】:

    问题在于\r 和\n。这些需要转义为

    \\r 
    

    \\n 
    

    在 JSON 字符串中

    【讨论】:

      【解决方案3】:
      var s= JsonString;
      $.parseJSON(s.replace(/\s+/g,""));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-08
        • 2017-03-16
        • 2013-05-10
        • 1970-01-01
        • 1970-01-01
        • 2020-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多