ajax 使用get请求
总结一下ajax请求的操作流程,里面有些关键点还是需要特别注意的!
get请求时,后台通过request.getParameter()获取参数
发送的data即为要拼接的参数
当响应为json格式时,后台需要将数据包装成json对象传输数据
response.setContentType(“text/html;charset=utf-8”) 往浏览器回写数据时设置编码方式,防止中文乱码
前台js写法:
function selectTeacher(empName){
var ctid=document.getElementById("getCtid").value
$.ajax({
url : "/gymms/changeTeacher", <!--get方式请求,这里使用相对路径拼接url-->
type : "get",
dataType: "json", <!--服务器响应的数据类型为json串-->
data : "ctid="+ctid+"&empName="+empName, <!--等价于URL后面拼接参数-->
success:function(result) {
alert(result.message) <!--请求成功时运行弹窗,取出json里面的value数据提示-->
location.href="/gymms/findBy?ctid="+ctid <!--确认后跳转回上一级界面刷新,重新拼接路径-->
},
error:function(result) {alert(result.message)} <!--打印错误信息-->
});
}
后台Controller层这样写:
@Autowired
private ContractService contractService;
@RequestMapping("/changeTeacher")
public void changeTeacher(HttpServletRequest request, HttpServletResponse response) throws IOException {
JSONObject jsonObject=new JSONObject();
try {
int ctid=Integer.parseInt(request.getParameter("ctid"));
String empName=(String)request.getParameter("empName");
Map<String,Object> map=new HashMap<>(); //存放转让合同参数
map.put("ctid",ctid);
if(contractService.findBy(map).get(0).getCtteacher().equals(empName)) { //按照ctid查找,取出唯一合同教练名,
//和待更换 教练名比较
throw new Exception("更换教练失败!..不匹配"); //校验是否进行更换新教练,若没有则手动抛异常
}
contractService.changeTeacher(ctid, empName); //执行更换ctid号合同的教练名
jsonObject.put("message","更换教练成功!"); //给json对象添加message
}catch(Exception e){ //捕获异常信息
jsonObject.put("message", e.getMessage()); //给json对象添加message,打印异常信息
}
response.setContentType("text/html;charset=utf-8"); //防止中文乱码
response.getWriter().print(jsonObject); //响应json对象格式的数据给前端页面
}
有时间再总结一下post请求。。