springmvc后台如何接收ajax传的json格式的数据,以及json数据采用哪种方式传到后台 2C

我现在遇到一个难题,以前,我用ajax传输数据到后台,后台用springmvc接收,成功了,但是,那个时候,我用的ajax的data部分是{"dcCode":dcCode,"itemNo":itemNo...},这样,我是一个参数,一个参数输入的,虽然慢,但是,还是成功地传输了。现在,我遇到的问题是,很多的参数,需要用遍历的方法来传参,我用jsonstr拼接json字符串的方法,拼出了以下的json格式,{"dcCode":"22","itemNo":"3456",...,"sectionName":"食品课"},....,可能有几百条这样的{}, 然后,我创建了一个数组var values=new Array, 用push把这些jsonstr都放进去,最后,我用ajax的dataType:json,post方法把这些数据传到后台,可是,后台是springmvc,@RequestBody(value="/save",method="post"), 可是,当我用String[] values来接收传过来的json参数的时候,却总是null,不知道到底是怎么回事儿,请教大家,都是用什么样的方法来处理这样传输多条json数据到后台的?如果我的思路是对的,能否把这个代码正确的告诉我?如果有更好的方法,请回答。非常感谢。

为了更好的说明问题,我把代码贴出来,如下

 function submit(){
    debugger;
    var n=$("#countnumber").text();




    var i=0;

    for(var a=0;a<n;a++){
        var saveData=new Array();
        var arr1=$('.item p').find('input:text');
        var arr2=$('.item p').find('input:checkbox');
        for(i=0;i<arr1.length;i++){
            saveData.push((arr1).eq(i).val());
        };



        for(var j=0;j<arr2.length;j++){
            saveData.push((arr2).eq(j).val());
        };



    };

    function User(userId,userName,userPwd,memo,addDate,modifyDate,addUserId){
           this.userId=saveData[1];
           this.userName=saveData[2];
           this.userPwd=saveData[3];
           this.memo=saveData[4];
           this.addDate=saveData[5];
           this.modifyDate=saveData[6];
           this.addUserId=saveData[7];
    };

      var user=new User(); 
      var users=new Array();
     users.push(user);


    $.ajax({
         type: "post",//数据发送的方式(post 或者 get)
         url: "insert.do",//要发送的后台地址
         data: {"user":JSON.stringify(users)},
         dataType: "text",//后台处理后返回的数据格式
         success:function (data){  
             alert(jQuery.parseJSON(data).msg);
         }
    });

}

以上是前台的,接下去是后台的

@ResponseBody
    @RequestMapping(value = "/insert.do", method = RequestMethod.POST)    
    public  Map insertUsers(HttpServletRequest request, @RequestBody String users) throws Exception{
        users=URLDecoder.decode(users, "utf-8");
        ObjectMapper mapper = new ObjectMapper();  //这里用了jackson,自己看看代码,很简洁的
        JavaType javaType=mapper.getTypeFactory().constructParametricType(List.class,User.class);
        List<User> list = mapper.readValue(users, javaType);
        String msg=userService.insertUsers(list);
        Map map = new HashMap();

        map.put("msg", msg);

        return map;



    }   

然后,后台的效果截图如下
图片说明

传到后台的Controller的,数据显示如下
图片说明

然后,进一步调试,出现错误如下

图片说明

请问,这个错误到底是什么原因造成的。是500错误。请高手帮助啊!

4个回答

你的前台数据的结构是{"dcCode":"22","itemNo":"3456",...,"sectionName":"食品课"},{"dcCode":"22","itemNo":"3456",...,"sectionName":"食品课"},{"dcCode":"22","itemNo":"3456",...,"sectionName":"食品课"}吗?????还有一个问题是,你的方法注解是不是有点问题,貌似是@RequestMapping(value="",method=RequestMethod.POST) 其实这种错误,你可以F12把浏览器的调试模式调出来,然后查看前台传参封装的key-value是什么,然后后台springMVC才知道用什么样的方式去接受。

得到json后建议用jackson解析,现在只说思路

var jsonArr = [{"id":1,"name":"同学1"},{"id":2,"name":"同学2"}];
//下面是请求片段,因为$可能会被吃掉,所以用jQuery
jQuery.ajax({  
type:"POST",  
url:base +"/save",  
data:{"datalist":JSON.stringify(jsonArr)},  
dataType: "json",  
success:function (data){  

}
})

//接收片段
@RequestMapping(value = "/save", method = RequestMethod.POST)    
    public  void myDomain(HttpServletRequest request, @RequestBody String datalist) throws Exception{

        ObjectMapper objectMapper = new ObjectMapper();  //这里用了jackson,自己看看代码,很简洁的
        JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, Domain.class);  
        List<Domain> list = objectMapper.readValue(datalist, javaType);  

        System.out.println("");    
    }  

        //这是实体,属性对应json,用jackson解析方便
        public class Domain {
    private Long id;
        private String name;
        //getter and setter...
   }

u011126065
jasondyoung 错误原因是 not supported ...什么的吧,
2 年多之前 回复
FaradayZhangChina
FaradayZhangChina 你好,我觉得你写地有道理,但是,我在自己的环境里运行了你的后台解析代码,结果出现了一个报错,我不知道该如何联系你,请你留下QQ,我向你请教。谢谢
2 年多之前 回复

你用String values 接收 因为你传的是字符串 他是不会给你转成数组的,还有ajax 要设置 contentType: "application/json; charset=utf-8", 这是请求参数的类型。

qq_34155601
来啊快活啊 回复FaradayZhangChina: javaType 是什么 mybatis里面的那个?不懂 后端接收到字符串解析成对象就行了
2 年多之前 回复
qq_34155601
来啊快活啊 回复FaradayZhangChina: 接收到字符串 用json解析出来 字符串-->对象
2 年多之前 回复
FaradayZhangChina
FaradayZhangChina 你好,是的我传的是字符串,所以,我想用javaType转成集合,然后,传到后台,用jdbcTemplate进行操作。可以吗?
2 年多之前 回复
jQuery.ajax({  
type:"POST",  
url:base +"/save",  
data:JSON.stringify(jsonArr),  //注意看这是第一个修改的地方
dataType: "json",  
contentType:'application/json',//注意看这是第一个遗漏的地方
success:function (data){  

}
})


@RequestMapping(value = "/save", method = RequestMethod.POST)    
    public  void myDomain(HttpServletRequest request, @RequestBody List<Domain> datalist) throws Exception{
                    //第二处修改的地方在于参数,由于springmvc本身就有支持json格式数据的@RequestBody,可以自动转换成对应的实体
                    //所以上面做的事多此一举
                    System.out.println(datalist.size());   //你可以打印这里,按上面的例子这里是2,不可能是null. 
    }

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ajax传数据及后台接收
&lt;script type="text/javascript"&gt; $(document).ready(function(){ var saveDataAry=[]; var data1={"userName":"test","address":"gz"}; var data2={"userName":"ququ",...
Ajax后台传json格式数据到html
前台: $.ajax({ url : 'queryRegion', dataType: 'JSON', async : false , success: function(data){ var rg = $(document).find("#regionName"); for(var i=0;i<data.length;i++
ThinkPHP Ajax 接收后台Json数据
ThinkPHP Ajax 接收后台Json数据JavaScript内容““html var URL='URL'; $.ajax({ url: URL+'/returnAjax',//提交访问的URL type: 'GET',//提交的方法 dataType: 'text
springmvc后台如何给前台传json数据
json数据在web开发中广泛使用 每种框架如何处理json数据,如何传json到前台又是不一样的,今天来看一看springmvc如何做到的。
springMvc前台传数据后台接收
1,前台form表单提交, 后台 public String test(String id,String name){ testService.test(id,name); } 2.前台提交String json 例如 var jsonshuzu2 = ‘{“id”:”1”,”name”:”1”}’; 后台 public String test(@RequestBody param, H
springmvc接收ajax的json格式数据
1.jsp封装数据,示例中是list数组 var saveList = new Array(); $.each($("#hasList tr"), function(i, n){ var a = $(n).find("td:first a"), id = $(a).attr("data-id"), name = $(a).text(); saveList.push({id:id,na
前台ajax接收json数据和后台返回json数据
网上找资料,说前台js接收json格式的数据有json。stringifiy(),eval(),json.parse()这几种,那这几种方法各在什么情况下用呢.?rn例如这是我的后台rnrn[code=java] @RequestMapping("/getBicycleList")rn @ResponseBodyrn public String getBicycleList(String currentPage,HttpServletResponse response) throws IOExceptionrn if("".equals(currentPage)||null==currentPage)rn currentPage="1";rn rn int totalRecord=bicycleServiceImpl.getTotalRecord();rn Page page=new Page(totalRecord, Integer.valueOf(currentPage), 15);rn Map map=new HashMap();rn map.put("page", page);rn List bicycleList=bicycleServiceImpl.getBicycleList(map);rn map.put("bicycleList", bicycleList);rn JSONObject jsonData=JSONObject.fromObject(map);rn return jsonData.toString();rn [/code]rnrn这是前台ajaxrn[code=java] $.ajax(rn url:"/BicycleSystem/getBicycleList.do",rn type:"post",rn dataType:"json",rn data:currentPage:"1",rn success:function(data)rn alert(data);rn alert(JSON.stringify(data));rn var newData=eval("("+data+")");rn alert(newData);rn rn )[/code]rnrn用Stringify()能解析出返回的数据,alert(JSON.stringify(data));能执行,拿到的数据也是后台返回的数据rn但是后面用eval()处理的数据没反应,alert(newData);根本就没执行,这是为啥rnrn
关于AJAX请求后台数据,接收后台返回的JSON数据,以及前台遍历json数据和append追加元素。
在这两天的学习以及练习过程中,需要涉及到微信小程序的一些东西。在小程序中,是不能直接跳转后台逻辑来获取数据,而是通过使用AJAX传值和AJAX请求,来向后台逻辑传递信息。1,比如说注册,填写信息之后,通过AJAX传递给后台,后台处理返回是否注册成功的JSON数据,前台再加以分析是否注册成功,并反馈给客户。例如:注册按钮的onclick=&quot;add()&quot;,调用add方法function add(){ ...
后台接收【ajax传递数据】的方式
一. 使用实体接收 var arg = {"name" : "yaoxiaoxu", "age" : 23 }; $.ajax({         url:url,         type:"POST",         data:JSON.stringify(args),         contentType:"applicati...
springmvc 后台接收前台数据
1,使用HttpServletRequest获取 1.1后台方法 @RequestMapping(value="/login",method = RequestMethod.POST) public String login(HttpServletRequest request) { if(userService.selectUser(request.getPa
jquery如何接收后台的json数据
thinkphp部分:rn控制器:Home/index/sessrn输出:$data = json_encode($aaa);rn echo $data;rn前台已经输出"aaa":"\u4e00\u4e00\u7c7b","bbb":"\u4e8c\u4e00\u7c7b","ccc":"\u4e09\u4e00\u7c7b" ,对应的URL路径http://127.0.0.1/home/sess?aaa=4&bbb=7&ccc=9rn请问用jquery怎么获取sess的json数据?网上的get,post,getJSON,Ajax都试着套了,不知道弄,好苦闷!!!rn求大神!!![img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/56.gif][/img]
springmvc接收json格式数据
controller代码如下:@RequestMapping(value=&quot;/userInfo&quot;,method=RequestMethod.POST)@ResponseBodypublic String getUser(@RequestBody User user){    //代码部分    return null;}1. springmvc接收json格式的参数时,需在参数前面添加注解@Req...
jquery ajax treeview 接收后台返回的json数据
我想做一个树型菜单 用jquery + treeview ,用ajax向后台请求一个servlet , 但是前台的脚本不会写 ,在网上找到一段代码 $("#navigation").treeview( rn url: "/tree"rn rn );rnrn 可是程序不调用这个servlet ,各位高手 帮帮忙
springMVC接收json格式数据
1. 加入jar包 2.加入js文件 3.配置springmvc-config.xml text/html;charse
springMVC接收JSON格式数据
SpringMVC提供了一个@RequestBody,它是用来处理前台定义发来的数据Content-Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等; 因此对于前台发送的数据类型必须是“application/json”格式,否则会报400错误;而且需要用post方式发送请求,将...
使用ajax接收后台发送过来的json数据
今天给大家带来一个简单的使用ajax接收后台返回json格式的demo 废话不多说直接上代码 后台代码 package com.sidan.outjson; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.serv
ajax获取后台的json数据
function getCity1(){           // var pcode=$('#hjszs1 option:selected') .val();             var obj11= document.getElementById("hjszs1");             var  city=document.getElementById("hj2")
Ajax 如何传JSON格式数据
直接上代码,还是比较容易理解的, var parr = []; $(".pid").each(function(){ if($.trim($(this).val()) != ""){ var p =new Product(); //p.id = $(this).val(); p.product_id = $(this).val().tr
html前台怎么接收后台传回来的json格式数据
我是在网页第一次加载的时候,传入的json的数据,写在ASP.NET Page_Load的。没用ajax什么的。这样前台怎么接收还是说只能前台调后台,才能接收?
springMVC前台传JSON对象数组到后台,后台接收
前台ajax传JSON对象数组$.ajax({        url: url,        type: &quot;post&quot;,        data: JSON.stringify(aa),        contentType: &quot;application/json&quot;,        success: function (result) {             alert(&quot;成功了!&quot;);   ...
ajax向后台springmvc传对象数组
前后台数据交互
ajax(jquery)前后台传数组(Springmvc后台)
前端代码: &lt;script&gt; $(function () { var list=new Array(); list.push(6); list.push(9); console.log(list); $.ajax({ url: "/ssm/preview", ...
springMVC 前台传递json格式数据到后台
1、在springMVC的配置文件中,添加 2、利用标签@RequestBody 接收json 格式的前台数据
SpringMVC中后台转换json格式
用来解决SpringMVC+Ajax技术中前台报406的错误信息,实现后台json格式与前台一致
ajax前台接收后台传的图片
ajax前台接收后台传的图片地址 ,用字符串拼接的 为什么不显示图片,别的数据都显示的
ajax传数组到后台,后台springmvc 接受数组参数
ajax传数组到后台,后台springmvc  接受数组参数   var   ids= new Array();   $("input[class='detailCheck']:checked").each(function(i,k){    var itemId=$(this).attr("itemId");    ids[i]=itemId;   });
ajax 传json到后台servlet接收
用jQuery 的$.ajax 将json数据传到后台,后台servlet接收这个json数据。 String data = request.getParameter("skills"); JSONArray json = JSONArray.fromObject(data); if(json.size()>0){  for(int i=0;i<json.si
前台ajax传数组,后台java接收
前台ajax传数组时,前台要封装成json格式 --JSON.stringify(array),同时设置 traditional : true;否则Java端接收值为null js代码 var array=new Array(&quot;Saab&quot;,&quot;Volvo&quot;,&quot;BMW&quot;); $.ajax({ type: 'GET', contentType: 'appli...
后台如何接收前台ajax的formdata数据?
ajax调用后台是静态方法,无法通过request[]这样的形式去获取参数,那么我前台使用formdata,后台如何拿到formdata里的参数?rn由于是post,并且要上传文件,所以才用的formdata,直接data里拼参数然后写在后台的入参里是不可行的。
ajax传数组到后台,后台springmvc 接受数组参数
关于ajax传数组到后台,后台springmvc  接受数组参数  特意整理了一下】     var   ids= new Array();  var checkId = new Array();//定义一个数组用来接收参数         $(&quot;input:checked&quot;).each(function() {             checkId.push($(this).val())...
AJax提交表单数据到后台springmvc接收
第一种方法直接用serialize()方法 function insert(){ $.ajax({ type:"POST", url:"${pageContext.request.contextPath}/order/insert", data : $("#fom").serialize(),
ajax传数组到后台
js代码 function login123(){ var nameArr = new Array(); nameArr.push("adm,in"); nameArr.push("jo,in"); nameArr.push("check,in"); console.info(nameArr);
ajax 传对象数组到后台
前台 : var jsonMarker =JSON.stringify(newMarkers) $.ajax({ type: "post", url:"saveMapMaker", data:jsonMarker, contentType: "application/json; charset=utf-8", dataType:
ajax 异步请求向后台传数组,后台无法接收
在开发过程中因为业务需要做批量任务时,经常会把id封装成数组,传到后台做批量处理,ajax普通的传参方式,后台无法接收的到,无论是数组参数接收也好,还是request接收也好,都接收不到,那么当然也可以通过URL传,拼接字符串,在这里解决的就是无法传数组的问题。下面是ajax请求。 下面是后台的接收方法 在这里exps为空接收不到的,request接接收的arr也为空,接收不到参数,经
REST后台接收JSON格式问题
这个问题困扰了好久终于解决了1.首先看看springmvc是否配置了注解映射支持json2.前端提交的应是json格式 比如ajax提交 3.测试工具提交4.后台接收5.这是我的输出结果...
关于传json数据给后台
JSON.parse()与JSON.stringify()的区别JSON.parse()【从一个字符串中解析出json对象】例子://定义一个字符串var data='{&quot;name&quot;:&quot;goatling&quot;}'//解析对象​​JSON.parse(data)结果是:​name:&quot;goatling&quot;JSON.stringify()【从一个对象中解析出字符串】var data={name:'goatli...
SpringMVC后台接收请求参数的几种方式Demo
SpringMVC后台接收请求参数的几种方式源码。总结了常用的注解,介绍GET和POST请求方式下的参数传递方法。
springmvc后台接收前台页面传递参数的方式
前端form传递username和password两个参数,后端的接收方式可以有一下几种方式:     @RequestMapping(&quot;/jsp/login/login.do&quot;) public ModelAndView login(String username,String password){ ModelMap map = new ModelMap(); map.p...
SpringMVC ajax和后台交互
1.前台页面的异步请求 $.ajax({ url : "register.do", type : "post", data : { "account" : value }, dataType : "json", success : function(data) { alert(data.msg); } }); 2.后台controller处理并回应异步
后台传的json数据怎么获取
resultMessage{GID:&quot;EF412D1A31414F369A12C8270F785D33&quot;, HEADER_PIC: &quot;http://avatar.csdn.net/B/B/1/1_cmwqffxygr.jpg&quot;, LOGIN_MAIL: &quot;pj&quot;, ORG_GID: &quot;0&quot;, REAL_NAME: &quot;教育局 弗拉基米尔 . 普京&quot;, …}后台传回的数据是这样的。用 resultMe...
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法