使用JSON.parse解析后台返回的JSON字符串时报错,原因大概是遇到特殊字符没有转义。
可以用str.replace(/\n/g,"\\n")转义,'\\'转成单个'\','\\n'转成'\n',最后转成'\\n'这样就可以用parse转成对象时变为'\n',取出的字符串设置到html文本中\n被解析为换行。
ex:
{"ip":"192.168.55.6","result":"PING 192.168.55.6 (192.168.55.6) 56(84) bytes of data.--- 192.168.55.6 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 12999ms
"}
解决方法:
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓success: function (result) {
res = JSON.parse(result.replace(/\n/g,"\\n").replace(/\r/g,"\\r"));//转义
str_o = res.result;
str_n = str_o.replace(/\\n/g,"\r\n");//解析后再转回来
$("#ping").val(str_n);
}
PS:JSON字符串中有undefined时,也会报错,应避免在JSON字符串中出现undefined。