フロントエンドでjsonデータをjsオブジェクトに解析できませんでした

4901 ワード

           ,                  。                 ,    ,      。
      :  ajax  json  , json           ,       

バックグラウンド
@RequestMapping("roleinfo.do")
    @ResponseBody
    public String getRoleInfo(){
        List rolelist=authPartyService.getAllRole();
        String str=JSON.toJSONString(rolelist);

        return str;
    }

フロント
function getRoleInfo(){
            $.ajax({
                   type: "POST",
                   url: "roleinfo.do",
                   data: "",
                   success: function(data){
                       initSelect(data);
                   }
                }); 
        }


        function initSelect(msg){
            var data=$.parseJSON(msg);
            var rolelist=$("#rolelist");
            for(var i=0;i"");
            }


        }

データ:[{"roleId":"1","tenantId":null,"roleCode":null,"roleName":"ロール1","roleDesc":null,"roleType":"1","createUser":null,"createTime":147298509000;,{"roleId":"2","tenantId":null,"roleCode":null,"roleName":"ロール2","roleDesc":null,"roleType":"2","createUser":null,"createTime":1472198520000}{"roleId":"3","tenantId":null,"roleCode":null,"roleName":"ロール3","roleDesc":null,"roleType":"3","createUser":null,"createTime":147298527000}{"roleId":"4","tenantId":null,"roleCode":null,"roleName":"ロール4","roleDesc":null,"roleType":"4","createUser":null,"createTime":147298537000}{"roleId":"5","tenantId":null,"roleCode":null,"roleName":"ロール5","roleDesc":null,"roleType":"5","createUser":null,"createTime":147298544000}{"roleId":"6","tenantId":null,"roleCode":null,"roleName":"ロール6","roleDesc":null,"roleType":"6","createUser":null,"createTime":147298552000}{"roleId":"7","tenantId":null,"roleCode":null,"roleName":"ロール7","roleDesc":null,"roleType":"7","createUser":null,"createTime":147298559000}{"roleId":"8","tenantId":null,"roleCode":null,"roleName":"ロール8","roleDesc":null,"roleType":"8","createUser":null,"createTime":147298570000}]
本来、parseJSON変換を使用すると、dataは配列になりますが、デバッグデータに基づいて文字列が残っているというエラーが発生しました.data[0]=”[“,data[0].roleId=”undefined”.
1、フロントの解析方法が間違っていますか.eval(「(「+data+」)およびJQuery.parseJSON()は全部使えないので間違いありません.
2、バックグラウンドのjsonデータフォーマットが間違っていますか?私はfastjsonを使ってjson文字列変換をしています.フォーマットが標準的で、問題があるはずがありません.このように考えても理解できない.
最終的に問題を発見したのはspringmvcの注釈@@ResponseBodyを使用したことで、この注釈を使用するとspringmvcは自動的に返されたデータをjson文字列に変換します.そこでデータは2回のjson変換を経て、フロントに着いて文字列に解析するしかありません.
解決:
@RequestMapping("roleinfo.do")
    @ResponseBody
    public List getRoleInfo(){
        List rolelist=authPartyService.getAllRole();

        return rolelist;
    }

参考資料:1、http://www.jb51.net/article/76180.htm 2、http://leopard168.blog.163.com/blog/static/168471844201542454512124/