Ajax传输对象给后端--SpringMVC

来源:互联网 发布:峨眉山 知乎 编辑:程序博客网 时间:2024/06/15 00:36

1、后端Entity

/** * @author Franz.ge [nizhigeng@foxmail.com] * @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 [nizhigeng@foxmail.com] * @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<String, String> map = new HashMap<String, String>();        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

原创粉丝点击