如何通过ajax从spring控制器获取数据?

我在jsp页面上有一个ajax ,通过URL /check调用spring控制器。

 $.ajax({ type : "GET", url : "${pageContext.request.contextPath}/check", data : { "id" : ${articleCount} }, success: function(data){ //response from controller } }); 

现在,控制器看起来像,

 @RequestMapping("/check") public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) { boolean a = getSomeResult(); if (a == true) { model.addAttribute("alreadySaved", true); return view; } else model.addAttribute("alreadySaved", false); return view; } 

我使用模型发送数据并尝试success: function(data)访问它success: function(data)"${alreadySaved}"但它显示为空白。

有什么办法可以在视图页面上收到true/false数据吗?

您必须为spring ajax调用示例添加@ResponseBody注释

 @RequestMapping("/check") @ResponseBody public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) { boolean a = getSomeResult(); if (a == true) { model.addAttribute("alreadySaved", true); return view; } else { model.addAttribute("alreadySaved", false); return view; } } 

控制器部分

您必须为spring ajax调用示例添加@ResponseBody注释

查看零件

 $.ajax({ type : "GET", url : "${pageContext.request.contextPath}/check", data : { "id" : ${articleCount} }, success: function(data){ $('#input_field').val(data); } }); 

当您尝试从ajax请求返回值时,应使用@ResponseBody注释。 由于您的方法返回类型是String确保将字符串值而不是视图返回给jsp。

因为它会再次呈现jsp的响应

 @ResponseBody public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) { boolean a = getSomeResult(); if (a == true) { return "already saved"; } return "error exist"; } 

在你的jsp中,

 success: function(data){ alert(data); } 

使用@ResponseBody

当您添加@ResponseBody注释时,Spring会将返回值绑定到传出的HTTP响应正文。

 @ResponseBody public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) { boolean a = getSomeResult(); if (a == true) { return "already saved"; } return "error exist"; } 

Spring将使用HTTP消息转换器将返回值转换为HTTP响应主体[将对象序列化为响应主体],基于请求HTTP标头中使用的Content-Type。

了解更多信息:

http://websystique.com/springmvc/spring-mvc-requestbody-responsebody-example/