Ajax传递JSON数组对象,Unsupported Media Type 415问题解决办法

场景:Ajax传一个json对象到服务器,让参数自动封装至与json对象匹配的java对象中。

错误类型

  • 错误类型1:

"status":415

"error":"Unsupported Media Type"

"exception":"org.springframework.web.HttpMediaTypeNotSupportedException"

原因:没有使用JSON.stringify(rowData)方法将请求参数转化为json字符串

  • 错误类型2:

"status":400

"error":"Bad Request"

"exception":"org.springframework.http.converter.HttpMessageNotReadableException"

原因:未使用[contentType : 'application/json',]配置指定请求参数格式。

正确代码

  js代码:

 
  1. rowData:是easyui datagrid表格的一行数据,和服务器的一个java类Condition对象属性完全匹配。
    JSON.stringify(rowData):将rowData对象解析成字符创。
 
  1. $.ajax({
  2. type : 'PUT',
  3. url : url,
  4. dataType : 'json',
             contentType : 'application/json',
    data : JSON.stringify(rowData),
  5. beforeSend : function () {
  6. // ....
  7. },
  8. success : function (data) { // 返回的RequestResult的json对象
  9. console.log(data);
  10. },
  11. });

  spring boot Controller 接收参数的 java代码:

 
  1. @RequestMapping(value = "/test", method = RequestMethod.PUT)
  2. public @ResponseBody RequestResult modifyCondition(@RequestBody Condition condition) {
 
  1. System.out.println("condition:" + condition.toString());
 
  1. // 创建假返回数据
  2. RequestResult result = new RequestResult();
  3. result.setCode(0);
  4. result.setMessage("success");
  5. return result;
  6. }

返回结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值