Ajax传输对象给后端--SpringMVC

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

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值