日期:2014-05-17  浏览次数:20805 次

SpringMVC与Jquery.ajax结合时的返回值问题
我用的是@ResponseBody注解来获得后台返回的东西
Jquery代码如下
$.ajax({
    url : "/project/test",
    type : "GET",
    contentType : "application/json",
    dataType : "json",
    success : function(data) {
        alert(data)
     },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
        alert("error");
    }
}

Controller如下
        /**
 * 测试Jquery.ajax
 */
@ResponseBody
@RequestMapping(value = "/project/test")
public List test() {
System.out.println("进入此方法");
Map<String, Object> map = new HashMap<String, Object>();
List list = new ArrayList();
return list;
}
如果返回值是一个String,int,或者空的list等 都能进入Jquery.ajax的success方法 值(int String)也能接收到,但是如果向list中add一个实体类  例如
        /**
    * 测试Jquery.ajax
 */
@ResponseBody
@RequestMapping(value = "/project/test")
public List test() {
System.out.println("进入此方法");
Map<String, Object> map = new HashMap<String, Object>();
List list = new ArrayList();
                list.add(new User("sy","23"));
return list;
}
这样就会走入Jquery.ajax的error方法 请问这是为什么
我用的是maven项目   框架是SpringMVC  配置文件什么的应该都对  因为其他功能都好使  还是说SpringMVC与Jquery.ajax联系起来还要配置其他的  jar包的话 上网搜  说的是需要jackson的包  我得项目中有jackson-core-asl-1.8.3.jar  和  jackson-mapper-asl-1.8.3.jar 
万分感谢
SpringMVC Jquery ajax @ResponseBody

------解决方案--------------------
引用:
引用:你的jquery ajax的返回值类型是json格式的,但是java里面返回值并不是json格式,所以error
我现在在后台拼StringBuffer字符串 把list拼一个字符串 返回这个字符串  前台用eval() 这样好使 但是有点麻烦 出了这种还有别的吗  我看网上的例子上有直接返回List和map的 我试了 ……

给你个例子,在后台也是可以并接成json格式的

PrintWriter out = null;
String jsonText = "[{\"result\":\"添加工作计划成功!\",\"id\":\""+planItem.getFiwpitemId()+
"\",\"planDate\":\""+planDate+"\"," +
"\"content\":\""+content+"\",\"responseMan\":\""+uMap.get(responseMan)+"\"}]";
try {
out = this.getResponse().getWriter();
JSONArray jsonArray = JSONArray.fromObject(jsonText); 
out.print(jsonArray);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
out.flush();
out.close();
}

客户端取json格式的值

$.ajax({
type:'post',//可选get
url:'',
data:{"planDate":datePlan,"content":content},