- 先定义一个实体类Msg,里面包含状态码,提示信息,用户要返回给浏览器的数据,里面还可以定义一个add方法,用来绑定属性和值。以后在controller就可以直接返回这个对象了。
public class Msg {
//状态码 100-成功 200-失败
private int code;
//提示信息
private String msg;
//用户要返回给浏览器的数据
private Map<String, Object> extend = new HashMap<String, Object>();
public static Msg success(){
Msg result = new Msg();
result.setCode(100);
result.setMsg("处理成功!");
return result;
}
public static Msg fail(){
Msg result = new Msg();
result.setCode(200);
result.setMsg("处理失败!");
return result;
}
public Msg add(String key,Object value){
this.getExtend().put(key, value);
return this;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Map<String, Object> getExtend() {
return extend;
}
public void setExtend(Map<String, Object> extend) {
this.extend = extend;
}
}
- 在controller中要使用,在方法上面添加 @ResponseBody,将返回的数据转换成json格式。
@RequestMapping("/depts")
@ResponseBody
public Msg getDepts(){
List<Department> list = departmentService.getDepts();
return Msg.success().add("depts",list);
}
还可以根据service方法返回值来设置返回状态是否成功
@ResponseBody
@RequestMapping("/checkuser")
public Msg checkuser(@RequestParam("empName") String name){
boolean b = employeeService.checkUser(name);
if(b){
return Msg.success();
}else{
return Msg.fail();
}
}
- 前端发送请求和拿数据,使用的ajax
//校验用户名是否可用
$("#empName_add_input").change(function(){
//发送ajax请求校验用户名是否可用
var empName = this.value;
$.ajax({
url:"checkuser",
data:"empName="+empName,
type:"POST",
success:function(result){
if(result.code==100){
show_validate_msg("#empName_add_input","success","用户名可用");
$("#emp_save_btn").attr("ajax-va","success");
}else{
show_validate_msg("#empName_add_input","error",result.extend.va_msg);
$("#emp_save_btn").attr("ajax-va","error");
}
}
});
});
其他:
只要方法执行完了,不报错,ajax转态都会返回成功,只能根据返回的转态码来看是否是自己想要的结果,然后根据状态码来响应。