今天基于这个问题纠结了一下午,导致这个问题的坑也是挺深的,查找问题最好是从这条数据的存储开始查找

问题1:先确定后台接收数据后存储到数据库里有没有自动转义特殊字符,比如

原始数据是:[{"user_id":20,"good":true}],这样的一个对象数组

存入数据库是:[{"user_id":20,"good":true}]

说明数据经过后端的逻辑处理,把前端的数据转义存储了

解决这个问题,前端传参数组的时候先用JSON.stringify序列化数据,再交给后端,这样就不用管后端开发者怎么处理的数据了

那么,我是序列化后的数据打印看到的还是它:[{"user_id":20,"good":true}],只不过它已经是字符串了

后台存储自动转义的时候,其实就是把一些特殊字符做了一些处理,以免其它更多的bug出现

这里提供两个常用函数处理这种转义的字符串,如下

/***  把html转义成HTML实体字符* @param str* @returns {string}* @constructor*/
export let htmlEncode = (str) => {var s = "";if (str.length === 0) {return "";}s = str.replace(/&/g, "&amp;");s = s.replace(/</g, "&lt;");s = s.replace(/>/g, "&gt;");s = s.replace(/ /g, "&nbsp;");s = s.replace(/\'/g, "'");//IE下不支持实体名称s = s.replace(/\"/g, "&quot;");return s;
}/***  转义字符还原成html字符* @param str* @returns {string}* @constructor*/
export let htmlRestore = (str) => {var s = "";if (str.length === 0) {return "";}s = str.replace(/&amp;/g, "&");s = s.replace(/&lt;/g, "<");s = s.replace(/&gt;/g, ">");s = s.replace(/&nbsp;/g, " ");s = s.replace(/'/g, "\'");s = s.replace(/&quot;/g, "\"");return s;
}

所以,如果后台返回的数据打印是这样的:[object object],

前台是通过

JSON.parse(item.good) 

无法解析数据,并且报错如下:

SyntaxError: JSON.parse: expected property name or '}' at line 1 column 3 of the JSON data

那你极可能遇到和我一样的问题

我的解决方案是:不动后台逻辑代码处理,前端加一个函数处理返回的数据,这个函数就是我上面分享的

JSON.parse(htmlRestore(item.good))

后台返回数据打印是[object object]的,报错:SyntaxError: JSON.parse: expected property name or ‘}‘ at line 1 column相关推荐

  1. js 动态生成html(js根据后台返回数据生成html页面中的table标签)(转义字符)

    js 动态生成html table标签中内容js生成 html代码 js代码 js 动态生成html 触发事件传参字符转义 table标签中内容js生成 html代码 <div><t ...

  2. 解决通过调用后台接口实现Excel导出功能,后台返回数据乱码的问题

    解决通过调用后台接口实现Excel导出功能,后台返回数据乱码的问题 问题如下: 这导致我虽然成功导出文件,但文件受损打不开 解决方案如下: 在调用接口加入: // 导出 export function ...

  3. thyme leaf使用Ajax后台返回数据不能渲染

    thyme leaf使用Ajax后台返回数据不能渲染 问题描述:thyme leaf使用Ajax从后台请求数据,前端页面渲染时只能显示返回到字符串,而不能显示返回异步请求的页面 问题原因: 问题描述: ...

  4. python request 报错 #No JSON object could be decoded

    python request 报错 #No JSON object could be decoded Python 使用request 发起post请求报错如下 报错如下 解决方案如下 Python ...

  5. [已解决]Object c,报错Expected method body

    Object c,报错Expected method body 原因分析:因为我将应该写在头文件Person.h的声明,写在和实现的Person.m文件中了 解决办法:将这些声明放在头文件Person ...

  6. 关于后台报错:no getter for property named ‘ew‘ in ‘class com.baomidou.mybatisplus.core.conditions.query.xx

    已解决 关于后台报错:no getter for property named 'ew' in 'class com.baomidou.mybatisplus.core.conditions.quer ...

  7. MySQL插入数据 报错Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column”问题

    有时候我们在往数据库中输入信息时,如果输入的内容是中文,会报错"Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column&q ...

  8. ajax后台返回数据中文乱码_ajax提交 返回中文乱码问题

    接口返回数据相关 使用@ResponseBody后返回NUll 说明:刚把后台运行起来,兴高采烈的测试接口数据,结果无论如何都是返回null, 最终通过各种百度,发现原来是没有引入关键的Jar包. 解 ...

  9. 解决Collection Object ([:protected]=Array())报错

    今天用laravel的DB取多个表的数据做统计运算,里面使用了多次DB查询并嵌套三个for循环.多个->leftJoin()一次使用.->select()多键,结果只能取到数据中的第一条数 ...

最新文章

  1. 分享Silverlight/WPF/Windows Phone一周学习导读(10月30日-11月6日)
  2. 【Python之旅】第五篇(三):Python Socket多线程并发
  3. 国际顶级学术会议CIKM2019北京开幕在即,重量级嘉宾带你窥探人工智能前沿
  4. 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )
  5. Open3D编译安装
  6. 重磅 |“吴恩达deeplearningai”官方微信公众号已经上线!
  7. amd显卡风扇调节_非公版才是真爱 讯景XFX RX6800 XT海外版显卡评测
  8. Linux视频 pad,Wine 1.9.10 发布下载, 改善视频输出
  9. python中可通过()实现代码的复用_(  )是可复用的,提供明确接口完成特定功能的程序代码块。...
  10. 【转载 待读】卷积神经网络
  11. Spring学习总结(13)——Spring+Log4j+ActiveMQ实现远程记录日志
  12. Flume+Kafka+Spark Streaming+MySQL实时日志分析
  13. LayaAir UI组件 # Tab 选项卡按钮组
  14. ios html 图片旋转了,解决移动端iOS下上传图片被旋转问题。
  15. 微信iOS收款到账语音提醒开发总结
  16. prometheus监控预警之AlertManager邮箱报警
  17. 关于html,body{height:100%}的理解
  18. word中图片批量修改
  19. netty开发tcp服务器最好不要用分隔符DelimiterBasedFrameDecoder这种分包方式
  20. 项目提测CheckList通用版

热门文章

  1. 前端学习(2949):创建webpack搭建项目
  2. [html] HTML5中的article和section有什么区别?
  3. 前端学习(2696):重读vue电商网站17之监听图片上传成功事件
  4. 前端学习(2372):uni-ui库
  5. 前端学习(1960)vue之电商管理系统电商系统之分类参数的基本结构
  6. 前端学习(1798):前端调试之css伪元素练习
  7. 前端学习(1644):前端系列实战课程之上移和下移
  8. 前端学习(1560):ng-class颜色切换
  9. 前端学习(83):按显示进行分类
  10. linux lnmp yum版安装