Spring MVC 中 AJAX请求并返回JSON

Posted 洛易

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC 中 AJAX请求并返回JSON相关的知识,希望对你有一定的参考价值。

一、以ModelAndView的方式返回

先看下javascript代码:

 1 /**
 2  * 保存-同步(版本控制库)
 3  */
 4 function saveSynchronizedVcHorse(obj) {
 5     var ss = $("#SynchronizedSelection div");
 6     var cacheSelectAry = new Array()
 7     for(var i = 0; i < ss.length; i ++) {
 8         //alert(ss.eq(i).html());
 9         //alert(ss.eq(i).find(‘label‘).html());
10         var o=ss.eq(i).find(‘label‘).find("input[type=‘checkbox‘]");
11         
12         var s = $(o).attr(‘checked‘);//由于$(obj).attr("checked", false); checked属性会被
13         if(s != null) {
14             cacheSelectAry.push($(o).attr(‘value‘));
15         } 
16     }
17     if(cacheSelectAry.length == 0) {
18         alert("请选择城市");
19         return;
20     }
21     var json = "SynchronizedBean={\"exceptionId\":\""+exceptionId+"\",\"cityIds\":["
22     for(var i = 0; i < cacheSelectAry.length; i ++) {
23         if(i == cacheSelectAry.length -1) {
24             json = json +"\""+ cacheSelectAry[i] + "\"";
25         } else {
26             json = json + "\"" + cacheSelectAry[i] + "\",";
27         }
28     }
29     json = json + "]}";
30     $.ajax({
31            type: "POST",
32            dataType: "json",
33            url: "../main/saveSynchronizedData",
34            data: json,
35            success: function(msg){
36                alert(msg.main);
37            },
38            error: function () {//XMLHttpRequest, textStatus, errorThrown
39                alert("请求失败"); 
40            } 
41     });
42 }

主要是看ajax请求部分。

再看Spring 中控制器的代码:

 1 @RequestMapping(value = "/saveSynchronizedData", method = RequestMethod.POST)
 2     public @ResponseBody ModelAndView saveSynchronizedData(@RequestParam("SynchronizedBean") String mSynchronizedJSON) {
 3         ObjectMapper objectMapper = new ObjectMapper();
 4         Map<String, String> map = new HashMap<String, String>();
 5         try {
 6             SynchronizedBean bean = objectMapper.readValue(mSynchronizedJSON, SynchronizedBean.class);
 7             if(bean != null) {
 8                 String[] ary = bean.getCityIds();
 9                 if(ary != null && ary.length > 0) {
10                     for(String s : ary) {
11                         VCHousePo po = new VCHousePo();
12                         po.setExceptionId(bean.getExceptionId());
13                         po.setCustomerCode(s);
14                         po.setCreateTime(new Date());
15                         po.setExceptionState(0);
16                         vcHService.add(po);
17                     }
18                 }
19             }
20             map.put("msg", "success");
21         } catch (JsonParseException e) {
22             e.printStackTrace();
23             map.put("msg", "error");
24         } catch (JsonMappingException e) {
25             e.printStackTrace();
26             map.put("msg", "error");
27         } catch (IOException e) {
28             e.printStackTrace();
29             map.put("msg", "error");
30         }
31         return new ModelAndView(new MappingJackson2JsonView(),map);
32     }

这里是通过ModelAndView的方式进行返回JSON的。另外:MappingJackson2JsonView使用的package是 

import org.springframework.web.servlet.view.json.MappingJackson2JsonView;

二、返回String的形式

这种方式不做实验,请查看http://hw1287789687.iteye.com/blog/2128304

以上是关于Spring MVC 中 AJAX请求并返回JSON的主要内容,如果未能解决你的问题,请参考以下文章

spring mvc ajax 后台向前台返回list

如何从 Spring MVC 控制器返回对象以响应 AJAX 请求?

使用 Spring MVC 4 处理跨域预检 AJAX OPTIONS 请求

spring mvc ajax success不执行 反倒执行error

Spring MVC 测试,MockMVC:方便地将对象与 JSON 进行转换

Spring MVC PUT 请求返回 405 Method Not Allowed