フロントエンドで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/