Spring MVC 结合jQuery实现AJAX
2014-05-15 15:47
357 查看
做前端几年了,很久没有写java后端代码,最近学习了下spring mvc ,用jquery结合起来还比较好用。
不说废话,大体把代码贴出来,希望对大家有启发。有繁杂的地方大家提出,一起进步。
前端 jquery调用点击 btn1点击触发按钮事件,序列form1中的数据发送一个post请求
后端 接受参数用 params = "format=json" 是否有参数format ="json"和produces = "application/json"请求头是否是application/json 来判断是否是一个json请求
JsonPackageWrapper用来存储返回的json对象,JsonPackageWrapper 我这里使用的是org.codehaus.jackson类库,例子中操作数据库后返回结果。
下面说下jsonp
前端,样子和上面差不多,改几个参数
后端 接受参数用 params =“ format=jsonp” 是否有参数“ format=jsonp” 和produces = "application/javascript"请求头是否是application/json 来判断是否是一个jsonp请求
jsonp的原理其实是请求一个js外链,请求参数只能是get是一个很大的局限,但是在某些场景下比较适合。
不说废话,大体把代码贴出来,希望对大家有启发。有繁杂的地方大家提出,一起进步。
前端 jquery调用点击 btn1点击触发按钮事件,序列form1中的数据发送一个post请求
<h3>填写资料,立即报名</h3> <form method="post" action="/activity/saveActivityIndividual" class="form1"> <h3>个人报名</h3> <p> 姓名:<input type="text" name="name" /></p> <p> 性别: <input type="text" name="sex" /></p> <p> 星座:<input type="text" name="constellation" /></p> <p> 电话: <input type="text" name="telephoneNumber" /></p> <input type="button" value="Submit" class="btn1" /> </form>
$(".btn1").on("click",function(){ var json1 = $(".form1").serialize(); $.ajax({ url:"/activity/saveActivityIndividual?format=json", type: "POST", data:json1, success: function(data, textStatus){ alert(data.scode); // 1 success -1 error }, error: function(data){ alert("Connection error"); } }); });
后端 接受参数用 params = "format=json" 是否有参数format ="json"和produces = "application/json"请求头是否是application/json 来判断是否是一个json请求
JsonPackageWrapper用来存储返回的json对象,JsonPackageWrapper 我这里使用的是org.codehaus.jackson类库,例子中操作数据库后返回结果。
package com.xiu.portal.web.controller; import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping(value = "/activity") public class ActivityRegistrationController { private static final XLogger LOGGER = XLoggerFactory.getXLogger(ActivityRegistrationController.class); @Autowired private ActivityTeamManager activityTeamManager; @RequestMapping(value = "saveActivityTeam", method = RequestMethod.POST, produces = "application/json", params = "format=json") public String saveActivityTeam(ActivityTeam activityTeam, Model model) { JsonPackageWrapper json = new JsonPackageWrapper(); try { long numOfPhone = activityTeamManager.findActivityTeamByPhone(activityTeam.getCaptainTelephoneNumber()); if(numOfPhone <=0){ activityTeamManager.addActivityTeam(activityTeam); json.setScode(JsonPackageWrapper.S_OK); json.setSmsg("sucuss"); }else{ json.setScode(JsonPackageWrapper.S_ERR); json.setSmsg("phone have used"); } }catch (PortalBaseException e) { json.setScode(JsonPackageWrapper.S_ERR); json.setSmsg(e.getMessageWithSupportCode()); } catch (Exception e) { json.setScode(JsonPackageWrapper.S_ERR); json.setSmsg("system exception"); } model.addAttribute(Constants.JSON_MODEL__DATA, json); return ""; } }
下面说下jsonp
前端,样子和上面差不多,改几个参数
$(".btn1").on("click",function(){ var json1 = $(".form1").serialize(); $.ajax({ url:"http://192.168.0.2/activity/saveActivityIndividual?format=jsonp&callback=?", type: "GET", dataType:"jsonp", data:json1, success: function(data, textStatus){ alert(data.scode); // 1 success -1 error }, error: function(data){ alert("Connection error"); } }); });
后端 接受参数用 params =“ format=jsonp” 是否有参数“ format=jsonp” 和produces = "application/javascript"请求头是否是application/json 来判断是否是一个jsonp请求
jsonp的原理其实是请求一个js外链,请求参数只能是get是一个很大的局限,但是在某些场景下比较适合。
package com.xiu.portal.web.controller; import org.slf4j.ext.XLogger; import org.slf4j.ext.XLoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping(value = "/activity") public class ActivityRegistrationController { private static final XLogger LOGGER = XLoggerFactory.getXLogger(ActivityRegistrationController.class); @Autowired private ActivityIndividualManager activityIndividualManager; @RequestMapping(value = "to",method = RequestMethod.GET) public String toActivity(){ return "pages/activityRegistration/create"; } @RequestMapping(value = "saveActivityTeam", method = RequestMethod.GET, produces = "application/javascript", params = "format=jsonp") public String saveActivityTeam(ActivityTeam activityTeam, Model model) { // 得以登录用户信息 JsonPackageWrapper json = new JsonPackageWrapper(); try { long numOfPhone = activityTeamManager.findActivityTeamByPhone(activityTeam.getCaptainTelephoneNumber()); if(numOfPhone <=0){ activityTeamManager.addActivityTeam(activityTeam); json.setScode(JsonPackageWrapper.S_OK); json.setSmsg("sucuss"); }else{ json.setScode(JsonPackageWrapper.S_ERR); json.setSmsg("phone have used"); } }catch (PortalBaseException e) { json.setScode(JsonPackageWrapper.S_ERR); json.setSmsg(e.getMessageWithSupportCode()); } catch (Exception e) { json.setScode(JsonPackageWrapper.S_ERR); json.setSmsg("system exception"); }model.addAttribute(Constants.JSON_MODEL__DATA, json); return ""; }}
相关文章推荐
- spring mvc 入门系列之五--结合Jackson和jquery实现的Ajax
- JQuery的AJAX与Spring MVC实现异步文件上传
- Jquery结合setinterval实现ajax实时刷新前台数据的效果
- PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
- 使用Python的Django框架结合jQuery实现AJAX购物车页面
- 使用Python的Django框架结合jQuery实现AJAX购物车页面
- Jquery与ajax结合实现验证用户名(邮箱是否)已经被注册过
- jQuery结合ajax实现动态加载文本内容
- jquery结合Spring MVC实现从后台读取数据的输入框提示
- java结合jQuery.ajax实现左右菜单联动刷新列表内容
- Spring MVC与jQuery结合使用Ajax技术
- Jquery结合Ajax和Web服务使用三层架构实现无刷新分页
- ajax结合jQuery autocomplete 实现类似百度搜索一样的输入联想
- JQuery之autocomplete结合ajax实现自动完成功能
- PHP结合Jquery和ajax实现瀑布流特效
- js(jquery)与ajax结合实现无刷新操作
- 代码下行Jquery结合Ajax和Web服务使用三层架构实现无刷新分页
- jQuery 结合AJAX实现添加、删除分类等功能【原创】
- 使用Python的Django框架结合jQuery实现AJAX购物车页面