今天做了个前后端交互的例子,再次记录一下以免以后遇到类似问题,新手笔记,有不妥之处,还望各位多多指正
部分前端关键代码如下
${job.uname }${job.jobName }${job.education}${job.money }${job.information }${job.date }才发现因为我这里是循环遍历对应的pageinfo.list方便分页查询,故在这里
直接绑定参数,把对应的job.xxx直接传到js对应的sendResume方法里,注意onclick里多参数的写法--%>
js对应的sendResume()方法如下
/*这里注意sendResume()里的参数顺序是有要求的,
应该和前面投递简历超链接的onclick中的参数的顺序一致*/
function sendResume(jid,jobName,uname){
alert("点击确定开始投递");
/*定义个数组放发送的变量并赋值*/
var sj = {};
sj.jid=jid;
sj.jobName=jobName;
sj.uname=uname;
sj.sid='${session.sid }';
sj.name='${session.name }';
sj.resume='${session.resume}';
alert("参数赋值完毕,开始传递!");
$.ajax({
/*请求类型*/
type:"post",
/*请求路径*/
url:"${pageContext.request.contextPath}/application/sendResume",
/*设置类型*/
contentType:"application/json;charset=UTF-8",
/*向后端传数据,stringify方法将sj转换为json格式*/
data: JSON.stringify(sj),
/*然后在这个弹窗里去显示出来*/
success:function(data) {
/*后端return的值默认都装在叫data的变量里*/
if(data="0"){
alert("投递成功!");
}else{
alert("投递失败!");
}
window.location.reload();
}
});
}
后端controller层对应处理如下
@RequestMapping("/sendResume")
@ResponseBody
/*这里主要用@RequestBody转换接受的JSON为对象,用@ResponseBody转换返回的对象为JSON。*/
public String sendResume(@RequestBody Application application){
System.err.println(application);
System.err.println("进入controller");
/*获取当前日期*/
Date utilDate = new Date();
System.out.println("utilDate : " + utilDate);
//util.Date转sql.Date
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
System.out.println("sqlDate : " + sqlDate);
application.setDate(sqlDate);
System.err.println(application);
System.err.println("开始调用");
/*ctrl+alt+t可选则try catch包裹*/
/*下面是为更新成功添加响应信息,成功则在前端提示添加成功,失败则在前端提示添加失败(默认为失败)*/
String msg="1";
try {
applicationService.addApplication(application);
/*0为成功*/
msg="0";
} catch (Exception e) {
e.printStackTrace();
}
return msg;
}
service层和dao层都是简单的调用,和简单的sql语句,就不写了 (若json传不到后端是因为在后端没有用@RequestBody接受Json,还有一点是别忘记事先导入Json的相关依赖)