特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/

1、问题描述

使用ajax进行post请求,参数为复杂对象,对象属性有数组,数组元素为对象。这种情况会报415错误。

ajax片段代码

  1. function test(){
  2. var url = "/api/demoController/add";
  3. var params = {
  4. "faceInfoList": [{
  5. "faceId": "1",
  6. "faceName": "leftFace"
  7. }, {
  8. "faceId": "2",
  9. "faceName": "rightFace"
  10. }],
  11. "personId": "123"
  12. }
  13. $.ajax({
  14. url:"/api/demoController/add",
  15. data:params,
  16. type:"post",
  17. dataType:"json",
  18. async:true,
  19. success:function(res){
  20. if(res.success || res.code == 200){
  21. console.log(res);
  22. }else{
  23. console.log(res);
  24. }
  25. },
  26. error:function(res){
  27. console.log(res);
  28. },
  29. });
  30. }

2、解决方案

增加一行参数:contentType: "application/json;charset=UTF-8",

改了之后会报400,查了之后还需要增加参数。

ajax参数改为:data:JSON.stringify(params)

修改后完整的代码为:

  1. function test(){
  2. var url = "/api/demoController/add";
  3. var params = {
  4. "faceInfoList": [{
  5. "faceId": "1",
  6. "faceName": "leftFace"
  7. }, {
  8. "faceId": "2",
  9. "faceName": "rightFace"
  10. }],
  11. "personId": "123"
  12. }
  13. $.ajax({
  14. url:"/api/demoController/add",
  15. data:JSON.stringify(params),
  16. type:"post",
  17. dataType:"json",
  18. contentType: "application/json;charset=UTF-8",
  19. async:true,
  20. success:function(res){
  21. if(res.success || res.code == 200){
  22. console.log(res);
  23. }else{
  24. console.log(res);
  25. }
  26. },
  27. error:function(res){
  28. console.log(res);
  29. },
  30. });
  31. }

Java后台代码为:

  1. @RequestMapping(value = "/add", method = {RequestMethod.POST}, consumes = MediaType.APPLICATION_JSON_VALUE)
  2. @ResponseBody
  3. public String add(@RequestBody InfoReq vo) throws IOException {
  4. System.out.println(vo.toString());
  5. return "Success";
  6. }

3、参考网站

https://www.cnblogs.com/goblinn/p/9352267.html

Ajax传递复杂对象报415的更多相关文章

  1. jq ajax传递json对象到服务端及contentType的用法

    目录 0.一般情况下,通过键值对的方式将参数传递到服务端 1.ajax 传递复杂json对象到服务端 2.content-Type 对asp.net mvc项目的重要性 0.一般情况下,通过键值对的方 ...

  2. ajax 传递JSON对象参数

    https://msdn.microsoft.com/zh-cn/library/cc836466(v=vs.94).aspx https://msdn.microsoft.com/zh-cn/lib ...

  3. jquery ajax 传递js对象到后台

    第一种:通过struts接收 (function ($) { $("#btnsave").click(function () { var params = {}; params[& ...

  4. Ajax传递List对象到前台展示问题遇到的坑

    后台Json转换 后台传递的List对象,如果对象是实体类,实体类和另一个表关联,就可能会出现以下错误 org.hibernate.LazyInitializationException: faile ...

  5. ajax传递数组、form表单提交对象数组

    在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致,那么传值就没有什么问题.不过,在前几天的开发 ...

  6. JS AJAX传递List数组到后台(对象)

    今天在写代码的时候,碰到的问题,百度了一下,发现原来AJAX传递List数据是可以的,之前还一直用JSON序列化(new Array()数组设置)进行传值的. var _list = {}; //等价 ...

  7. springMVC通过ajax传递参数list对象或传递数组对象到后台

    springMVC通过ajax传递参数list对象或传递数组对象到后台 环境: 前台传递参数到后台 前台使用ajax 后台使用springMVC 传递的参数是N多个对象 JSON对象和JSON字符串 ...

  8. ajax传递参数给springmvc总结[转]

    通过ajax传递参数给springmvc,经常会因为 参数类型太复杂,或者根本不知道springmvc都支持哪些类型转换,导致后台接收出现各种问题.如果书写格式没有问题仍然接受参数报错,大部分是因为s ...

  9. jsp采用ajax传递数组给后台controller并遍历

    ajax传递数组,期间出各种各样的问题,那叫一个头疼,网上各种查,都没有解决,最终摸索摸索加借鉴搞定,不多说,上代码 /* 复选框选定部分 */ $("#delete").clic ...

随机推荐

  1. 微信小程序在组件中获取界面上的节点信息wx.createSelectorQuery

    节点信息查询 API 可以用于获取节点属性.样式.在界面上的位置等信息. 最常见的用法是使用这个接口来查询某个节点的当前位置,以及界面的滚动位置. 示例代码: const query = wx.cre ...

  2. vmware centos .net core sdk开发测试

    环境:vmware + centos+ .net core2.0 一.安装.net core sdk sudo rpm -Uvh https://packages.microsoft.com/conf ...

  3. JS基础_返回值的类型

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. 初学java4 循环的使用

    for循环 for(初始条件;循环终止条件;循环结束后所执行代码){ 循环体 } while循环 while(循环终止条件){ 循环体 } do while循环 do{ }while(循环终止条件);

  5. CSS用户界面样式之cursor/outline/resize

    1. 鼠标样式cursor 检测鼠标指针在对象上移动的鼠标指针采用何种系统预定于的光标形状 常用属性: default 小白 hands小手 /pointer move移动 text文本 2. 轮廓 ...

  6. 【Struts2】防止表单重复提交

    一.概述 二.Struts2中解决方案 三.实现步骤 一.概述 regist.jsp----->RegistServlet 表单重复提交 危害: 刷票. 重复注册.带来服务器访问压力(拒绝服务) ...

  7. 【Java并发】线程安全和内存模型

    一.概述 1.1 什么是线程安全? 1.2 案例 1.3 线程安全解决办法: 二.synchronized 2.1 概述 2.2 同步代码块 2.3 同步方法 2.4 静态同步函数 2.5 总结 三. ...

  8. 第二章、Django以及数据库的配置

    目录 第二章.Django以及数据库的配置 一.小白必会三板斧 二.静态文件配置 三.form表单 action和method参数可以写的形式 四.request对象及方法 五.django连接数据库 ...

  9. 4.caffe:train_val.prototxt、 solver.prototxt 、 deploy.prototxt( 创建模型与编写配置文件)

    一,train_val.prototxt name: "CIFAR10_quick" layer { name: "cifar" type: "Dat ...

  10. bat wmic python 获取进程的所在路径

    bat wmic python 获取进程的所在路径 doc: wmic process where name="process-name" get executablepath w ...