Spring MVC前端与后端5种ajax交互方式

前端ajax与后端Spring MVC控制器有以下五种数据交互方式。(前台使用了dhtmlxGrid,后端使用了fastjson)

方式一  通过URL传参

通过URL挂接参数,如/auth/getUser?userid=‘6‘

服务器端方法可编写为:getUser(String userid),也可新增其他参数如HttpSession, HttpServletRequest,HttpServletResponse,Mode,ModelAndView等。

方式二  单值传参

前台调用如:

ajaxPost("/base/user/exchangeSort",{"id":rid,"otherid":otherid},function(data,status){

xxxxxx

xxxxxx

});

服务器端为:

public String exchangeSort(String id, String otherid)

方式三  对象传参

前台调用如:

var org={id:id};

ajaxPost("/base/org/getOrgById", org,function(data,textStatus){

xxxx

xxxx

});

服务器端为

public Org getOrgById(Org org)

方式四  对象序列化传参

前台调用如:

var ueser={id:rowId};

var data=ajaxPost("/base/user/findById",{"userObj":JSON.stringify(user)},null);

或者

var ueser={ };//创建对象

user["id"]=id;

user["name"]=$("#name").val();

user["dept"]={};//外键对象

user["dept"]["id"]=$("#deptid").val();

ajaxPost("/base/user/addUser",{"userObj":JSON.stringify(user)},function(data){xxxx;xxxxx;});

服务器端为:

@RequestMapping("/findById")

@ResponseBody

public UserInfo findById(String userObj) {

//使用fastJSON

UserInfo user = JSON.parseObject(userObj, UserInfo.class);

user = (UserInfo)
userService.findById(UserInfo.class, user.getId());

return user;

}

方式五  列表传参

前台代码如:

               var objList =
new Array();

grid.forEachRow(function(rId) {

var index = grid.getRowIndex(rId);

var obj = {};

obj["id"] = rId;

obj["user"] = {};

obj["user"]["id"] = $("#userId").val();

//不推荐这样的写法

//obj["kinShip"] = grid.cells(rId, 1).getValue();

//obj["name"] = grid.cells(rId, 2).getValue();

                   obj["kinShip"]=grid.cells(rId,grid. getColIndexById ("columnName")).getValue();

obj["name"]=grid.cells(rId,grid.getColIndexById("name")).getValue();

if(grid.cells(rId, 3).getValue()!=null && grid.cells(rId,
3).getValue()!="") {

var str = grid.cells(rId, 3).getValue().split("-");

var day = parseFloat(str[2]);

var month = parseFloat(str[1])-1;

var year = parseInt(str[0]);

var date=new Date();

date.setFullYear(year, month, day);

obj["birth"] = date;

}else {

obj["birth"] ="";

}

obj["politicalStatus"]  = grid.cells(rId, 4).getValue();

obj["workUnit"] = grid.cells(rId, 5).getValue();

if (grid.cells(rId, 6).isChecked())

obj["isContact"] ="1";

else

obj["isContact"] ="0";

obj["phone"] = grid.cells(rId, 7).getValue();

obj["remark"] = grid.cells(rId, 8).getValue();

obj["sort"] = index;

objList.push(obj);

});

ajaxPost("/base/user/addUpdateUserHomeList", {

"userHomeList" : JSON.stringify(objList),

"userId" : $("#userId").val()

},function(data, status) {

xxxxx

});

服务器端:

@RequestMapping("/addUpdateUserHomeList")

@ResponseBody

public String addUpdateUserHomeList(String userHomeList, String userId) {

List<UserHome> userHomes = JSON

                           .parseArray(userHomeList, UserHome.class);//fastJSON

if (userHomes != null && userHomes.size() > 0) {

try {

userService.addUpdateUserHomeList(userHomes, userId);

} catch (Exception e) {

e.printStackTrace();

}

}

return "200";

}

附上ajaxPost代码:

 function ajaxPost(url,dataParam,callback){
	 var retData=null;
	 $.ajax({
		 type: "post",
		 url: url,
		 data: dataParam,
		 dataType: "json",
		 success: function (data,status) {
		    // alert(data);
		 	retData=data;
		 	if(callback!=null&&callback!=""&&callback!=undefined)
		 		callback(data,status);
	 	},
	 	error: function (err,err1,err2) {
	 		alertMsg.error("调用方法发生异常:"+JSON.stringify(err)+"err1"+ JSON.stringify(err1)+"err2:"+JSON.stringify(err2));
	 	}
 });
      return retData;
 }
时间: 2024-08-01 09:16:43

Spring MVC前端与后端5种ajax交互方式的相关文章

Spring基础系列14 -- Spring MVC 请求参数的几种获取方法

Spring MVC 请求参数的几种获取方法 转载:http://www.cnblogs.com/leiOOlei/p/3658147.html 一.      通过@PathVariabl获取路径中的参数 @RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET) public String printMessage1(@PathVariable String id,@PathVariable String n

Spring MVC处理异常的4种方式

http://blog.csdn.net/ufo2910628/article/details/40399539 http://my.oschina.net/CandyDesire/blog/333340 Spring MVC处理异常有3种方式: (1)使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver: (2)实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器: (3)使用@Excepti

关于前端和后端交互的AJAX玩法

<input type="text" id="txt1" cols="80" rows="3" />  //首先建立text,用来显示后端解析好的数据 <center><input type="button" id="button1" value="查询" /></center> //建立一个按钮 用来查询数据库并返回数

mvc前端给后端传对象

我们平时使用asp.net mvc的时候,服务器端可以自动把请求的变量转换成参数的变量. 如果要调用 AccountController 里的 public ActionResult CheckLogin(string username, string pwd) action,那我们只需要在jquery的ajax里写上 var param = {}; param.username = "hello"; param.pwd = "word"; $.post("

Spring MVC处理异常有3种方式:

SpringMVC通过HandlerExceptionResolver接口处理异常,主要包括4个实现类: DefaultHandlerExceptionResolver AnnotationMethodHandlerExceptionResolver SimpleMappingExceptionResolver ResponseStatusExceptionResolver (1).默认装配DefaultHandlerException,在web.xml配置响应状态码和对应的页面 <error-

Spring MVC前端控制器不拦截静态资源配置

原文地址:https://www.cnblogs.com/niwotaxuexiba/p/11218177.html

Spring MVC异常统一处理(异常信息的国际化,日志记录)

JAVA EE项目中,不管是对底层的数据操作,还是业务层的处理过程,还是控制层的处理,都不可避免的会遇到各种可预知的(业务异常主动抛出).不可预知的异常需要处理.一般dao层.service层的异常都会直接抛出,最后由controller统一进行处理,每个过程都单独处理异常,且要考虑到异常信息和前端的反馈,代码的耦合度高,不统一,后期维护的工作也多. 同时还必须考虑异常模块和日志模块.国际化的支持. 因此需要一种异常处理机制将异常处理解耦出来,这样保证相关处理过程的功能单一,和系统其它模块解耦,

Spring MVC 编程基础

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 12.0pt; font-family: Consolas } h1 { margin-top: 17.0pt; margin-right: 0cm; margin-bottom: 16.5pt; margin-left: 21.25pt; text-align: justify

Spring MVC 系统异常处理方式及性能对比

大部分公司所用的Spring框架版本是3.1版本以下,所以今天暂时总结3.1版本的Spring-MVC异常处理方式. 一.Spring MVC处理异常有3种方式: (1)使用Spring-MVC提供的SimpleMappingExceptionResolver: (2)实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器: (3)使用@ExceptionHandler注解实现异常处理: 二.分别介绍这三种异常处理的实现方式: (1)使用Simpl