Controller 返回JSON对象,如果返回的为model对象,前台无法解析

背景: 想从后台返回一个获取到的对象,通过JSON。前台ajax得到结果后进行解析显示。
对应代码:

Controller 层:  
public void searchUser(){
//获取检索入力条件
String account = getPara("account");
User u = User.dao.getUserByAccount(account);
renderJson("userInfo",u);
}

返回的是一个User对象

  function searchUser(account){
 $.ajax({
     type : "POST",
     url : "/user/searchUser",
     async: false, 
     dataType : "json",
     data:{"account":account},
     success : function(data) {
 var userInfo = data.userInfo;
       alert(userInfo.account);

上述alert出来的结果是未定义。

但是如果我讲后台代码改为如下,前台alert的时候就是有值的。

public void searchUser(){
//获取检索入力条件
String account = getPara("account");
User u = User.dao.getUserByAccount(account);
Map<String,String> userInfo = new HashMap<String,String>();
userInfo.put("account", u.getStr("account"));
......
renderJson("userInfo",userInfo );
}

问题: 直接将检索的到的model对象设置到renderJson中,是否前台就无法解析。还需要其他什么转换么。

评论区

JFinal

2016-12-04 17:49

直接 alert(data) 而不是 alert(data.userInfo) 事情就全明白了,应该是 json 中取值时候的 key 有所不同,记得搞定后回来分享一下

jcdilon

2016-12-04 19:13

@JFinal 直接alert出来的是 [object Object]

initmo

2016-12-04 19:28

@jcdilon alert(JSON.stringify(data)); 看一下就全明白了!

JFinal

2016-12-04 23:06

@jcdilon 在后端先这样: Json.getJson().toJson(user) 生成 json 数据,然后输出来看看是否正确,正确以后再输出到客户端即可

热门反馈

扫码入社