1、前端发送ajax请求,后端需要返回什么?
在前端发送 AJAX 请求后,后端的返回内容需要满足前端能正确解析、处理请求结果的核心需求,通常包含以下关键要素:
1. 数据格式:JSON 为主(主流选择)
后端返回的数据格式需与前端约定一致,JSON(JavaScript Object Notation) 是最常用的格式,原因是:
- 轻量、易读,前后端都能高效解析(前端可直接用
JSON.parse()处理); - 支持复杂结构(对象、数组、嵌套数据等),能满足大部分业务场景;
- 兼容性好,所有主流编程语言和框架都支持 JSON 的序列化 / 反序列化。
少数场景下可能返回其他格式(如 XML、纯文本、二进制流等),但需前端提前约定解析方式。
2. 核心响应字段(建议统一结构)
为了让前端能统一处理请求结果(成功 / 失败、数据提取等),后端返回的 JSON 通常包含以下核心字段(字段名可自定义,保持前后端一致即可):
| 字段名 | 作用说明 |
|---|---|
code | 状态码(自定义业务码),用于标识请求结果(如:200 = 成功,400 = 参数错误,500 = 服务器异常) |
message | 提示信息,用于前端展示(如:“操作成功”、“用户名已存在”) |
data | 实际业务数据(成功时返回有效数据,失败时可返回 null 或错误详情) |
(可选)timestamp | 时间戳,用于标识响应生成时间(便于调试或日志追踪) |
示例:一个标准的 JSON 响应
{
"code": 200,
"message": "查询成功",
"data": {
"id": 1,
"name": "示例数据",
"list": [1, 2, 3]
},
"timestamp": 1628888888888
}
2、Java后端请求响应封装
创建工具类Result,统一响应格式:
package com.zff.ddlf.common;
/**
* 全局统一返回结果类
*
*/
public class Result<T> {
// 返回码
private Integer code;
// 返回消息
private String message;
// 返回数据
private T data;
public Result(){}
// 返回数据
protected static <T> Result<T> build(T data) {
Result<T> result = new Result<T>();
if (data != null)
result.setData(data);
return result;
}
public static <T> Result<T> build(T body, Integer code, String message) {
Result<T> result = build(body);
result.setCode(code);
result.setMessage(message);
return result;
}
public static <T> Result<T> build(T body, ResultCodeEnum resultCodeEnum) {
Result<T> result = build(body);
result.setCode(resultCodeEnum.getCode());
result.setMessage(resultCodeEnum.getMessage());
return result;
}
/**
* 操作成功
* @param data baseCategory1List
* @param <T>
* @return
*/
public static<T> Result<T> ok(T data){
Result<T> result = build(data);
return build(data, ResultCodeEnum.SUCCESS);
}
public Result<T> message(String msg){
this.setMessage(msg);
return this;
}
public Result<T> code(Integer code){
this.setCode(code);
return this;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
创建枚举类管理状态码:
package com.zff.ddlf.common;
/**
* 统一返回结果状态信息类
*
*/
public enum ResultCodeEnum {
SUCCESS(200,"success"),
USERNAME_ERROR(501,"usernameError"),
PASSWORD_ERROR(503,"passwordError"),
NOTLOGIN(504,"notLogin"),
USERNAME_USED(505,"userNameUsed")
;
private Integer code;
private String message;
private ResultCodeEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
}
设计优势
标准化:统一接口返回格式,减少前后端沟通成本
便捷性:通过静态方法快速创建响应对象,简化代码
可维护性:通过ResultCodeEnum枚举管理状态码,避免硬编码,便于统一修改
灵活性:支持泛型数据(T data),可适配任意业务数据类型
12万+

被折叠的 条评论
为什么被折叠?



