jquery-- json字符串没有自动包装为 json对象

jquery 的一个坑

页面使用 ajax ,回调函数中获取后端返回的 json 格式数据(ajax 未显式指定返回值类型),后端controller方法标注 @ResponseBody 并返回一个 实例对象。

代码大致如下

 1 $.ajax({
 2        type: "POST",
 3        url: "xxxxxx",
 4        data: "xxxxx=xxxxx",
 5        success: function(aaa){
 6  
 7               alert(aaa.msg);
 8                9            }
10             
11        })

正常情况下 这里可以访问到 aaa.msg(aaa是后端返回的实例对象,包含一个 msg属性)。

但是alert 显示  undefined,

如果把第7行代码改为    alert(aaa);  则可以显示一个 json格式的字符串。

这表明返回的 aaa 是一个  json字符串  而不是 json对象。如果是json对象 那么alert 显示会是  object object。

关于json字符串  和 json对象  参考:https://bbs.csdn.net/topics/390851792  

其中17楼的回答截取部分如下:

json格式的字符串,如果你前端用的是纯js,就要eval一下,但如果有用到jq框架等,它会帮你自动转成json对象,就不用eval了。
注:eval方法不是转json对象的意思,而是将字符串转成可执行的js代码。
如:对于一个字符串“alert('hello world')",eval这个字符串就能执行了。

这表明问题在于  js没有自动将 json字符串  转成 json对象。检查了一下发现 引用的 是  jquery-1.3.2.min.js   ,换成 jquery.js (1.9.1版本) 后,代码可以正常弹出 aaa.msg的值了。

还不清楚是 版本原因还是 因为 min的原因~  

原文地址:https://www.cnblogs.com/mumu122GIS/p/10088392.html