ajax获取后台数据变string类型解决方法

龙辰flash 2020-09-24 11:10:59
今天突然遇到ajax从后台获取到的数据变成了string类型,js里怎么也得不到json里面的值,传过来的值变成了d = "{"rows":[{"SaleTotal":28},{"SaleTotal":7},{"SaleTotal":1},{"SaleTotal":36}],"total":4}",
不知道什么原因多加了“”,导致后面d.rows[0]["SaleTotal"]怎么也获取不到里面的值,后来加了一段代码var e = JSON.parse(d);将d转换之后就获取到啦,上图:

职场小白,有哪位大神讲讲为啥传过来的值莫名多了“”,我在另外一个功能里ajax传过来的值都正常,后台代码都一样,没问题
...全文
8145 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰思雨 2020-09-25
  • 打赏
  • 举报
回复
3楼说的对,在ajax请求的时候,设置 dataType=‘json’ ,这样的话,收到的应答数据会自动帮你转换成JS对象。
冰思雨 2020-09-25
  • 打赏
  • 举报
回复
其实和双引号没多大的关系,如果你确定应答数据是Json串的话。 JSON规范里面明确规定,属性名都是字符串类型,也就是说,原则上,都要加双引号的。 属性名不加双引号行不行呢? 原则上是不行的,但是,很多程序没有强制要求,可以兼容不带双引号的情况。你要明白,不带双引号,其实是不和规矩的。 楼主遇到的问题的关键,不是双引号问题,而是Json串向JS转换的问题。 JS对这种情况有两种办法,一种是楼主的代码实现的,用JSON.parse()来转换,将字符串转换成JS对象;另一种是当做JS脚本的一部分,执行一下,得到的就是JS对象,就像你用JS脚本声明一个对象那样,其实和JSON的规则是一样的。
坚果o 2020-09-25
  • 打赏
  • 举报
回复
ajax配置里加上 dataType:'json'
葉幺 2020-09-24
  • 打赏
  • 举报
回复
json字符串转json对象 var str = "{id:1,name:'测试1'}" var obj = JSON.parse(str); console.log(obj ) // {id:1,name:'测试1'} console.log(obj .id) // 1
开拓者Amadues 2020-09-24
  • 打赏
  • 举报
回复
带不带引号可以自己定义,但JSON的规范格式是{"key":"value"},是要带双引号的,尽量按照规范做

52,792

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧