zoukankan      html  css  js  c++  java
  • 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的原因~  

  • 相关阅读:
    redis基础和sentinel
    Redis 官方集群
    python3基础(九)内置函数
    cobbler安装配置.基本全了多看help和docs
    #多个关联的python程序在linux后台运行
    python3基础(七)函数基础
    python基础(八)生成器,迭代器,装饰器,递归
    (03)-Python3之--元组(tuple)操作
    (02)-Python3之--列表(list)操作
    (01)-Python3之--字符串操作
  • 原文地址:https://www.cnblogs.com/mumu122GIS/p/10088392.html
Copyright © 2011-2022 走看看