Ajax传输对象给后端--SpringMVC

1、后端Entity
/**
 * @author Franz.ge [[email protected]]
 * @Date 2017/6/6 17:52
 *  实体学生类
 */
public class Student {

    private String name; //学生姓名

    private String sno; //学号

    private Integer age; //年龄

    private Integer sex; //性别

    public Student (){}

   //set....get...
}

[注意] 由于前端传送的对象数据只包含 name,sno 两个属性的对象
因此我们就需要设计个DTO类

如果JS传输所有的属性,就尽可能使用Student原生类

2、后端设计DTO类
/**
 * @author Franz.ge [[email protected]]
 * @Date 2017/6/6 17:52
 *  用于传输数据的对象
 */
public class StudentDTO {

    private String name; //学生姓名

    private String sno; //学号

   //set....get...
}
3、js前端AJax代码
/**
 *  这里要说明下 data是一个DTO对象
 * @param name
 * @param sno
 */
function studentWrite(name,sno){
// 这里传送的对象有多少属性,就要传送多少属性
// 所以一般都设计DTO
     var data = {
         name:name,
         sno:sno
     }
    $.ajax({
        type:"POST",
        url:"http://localhost/tujing/assignStudent",
        data: JSON.stringify(data),//必要
        dataType:"json",
        contentType:"application/json",
        async: false,
        cache:false,
        success:function(data){
            if(data.status=="success"){
                console.debug('----------------插入数据库成功------------------');
            }else{
                console.debug('----- ----------插入数据库失败------------------');
            }
        }
    });
}
4、SpringMVC后端
    /**
     * 获取用户其他信息
     * Ajax写进数据库
     */
    @ResponseBody
    @RequestMapping(value = {"assignStudent", "assignStudent"}, method = RequestMethod.POST)
    public Object assignStudent(HttpServletResponse response,  @RequestBody StudentDTO studentDTO ) {
       //获取DTO数据对象,处理业务
        boolean isSuccess = studentService.save(new Student(studentDTO));
        Map map = new HashMap();
        if (isSuccess) {
            map.put("status", "successs");
        } else {
            map.put("status", "fail");
        }
        return map;
    }

[总结] JS传输对象给后台,一般采用DTO对象

如果出现[HTTP 400 错误 - 请求无效 (Bad request)]
原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;
2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;
解决方案:
1)对照字段名称,类型保证一致性
2)使用stringify将前端传递的对象转化为字符串 data: JSON.stringify(data) ;

Franz.寄语:让优秀成为一种习惯。2017.06.07 Write

你可能感兴趣的:(Ajax传输对象给后端--SpringMVC)