//controller
1 @ResponseBody 2 @RequestMapping("/login") 3 public String login(Model model,String username,String password){ 4 System.out.println(username+" "+password); 5 model.addAttribute("str", "hello"); 6 model.addAttribute("res", "yes"); 7 return "aaa"; //string ajax可以接收 8 } 9 10 @ResponseBody 11 @RequestMapping("/login2") 12 public Map<String, Object> login2(String username,String password){ 13 System.out.println(username+" "+password); 14 Map<String,Object> map=new HashMap<String,Object>(); 15 map.put("res", "yes"); 16 return map; //map ajax可以不能接收 17 }
js
1 $(function() { 2 $("#btn").click(function() { 3 $.post("login",{"username":"zww","password":"123"},function(data){ 4 alert(data); 5 }); 6 }); 7 8 $("#btn2").click(function() { 9 $.post("login2",{"username":"zww2","password":"423"},function(data){ 10 alert("21"); //不弹出 11 // alert(data.res); 12 }); 13 }); 14 });
其中 第一个点击事件为后台传递string,此时回调函数是可以接收到的;第二个点击事件为后台传递map,此时回调函数不执行,一个简单的数字都不弹出。
新手,求大神解答。。
这个你用AJAX,把他返回的状态与错误打印出来,就知道是什么原因导致回调函数怎么不执行, error:function(XMLResponse){alert(XMLResponse.responseText)},用$.post是没法调试的
好了~ 多谢大神提醒。alert出来发现是页面406错误。设置了@ResponseBody,要把对象转换成json格式,缺少转换依赖的jar包。