精华内容
下载资源
问答
  • ajax向后端传递数组

    千次阅读 2019-12-25 14:49:45
    ajax在web项目开发中经常会用到,平时我们传递数据,基本都是一个参数名对应一个参数值,后端通过参数名就可以得到参数,从而进行相关逻辑处理,但是有时候我们会遇到批量操作,比如批量删除一个列表,这时候我们...

    https://blog.csdn.net/feinifi/article/details/81180673

    https://blog.csdn.net/weixin_44150474/article/details/103526735

    https://www.cnblogs.com/lijianda/p/9936775.html

    https://blog.csdn.net/weixin_44150474/article/details/103526735

     

    ajax在web项目开发中经常会用到,平时我们传递数据,基本都是一个参数名对应一个参数值,后端通过参数名就可以得到参数,从而进行相关逻辑处理,但是有时候我们会遇到批量操作,比如批量删除一个列表,这时候我们传递的就是一个id的数组,这时候前后端需要对数组传递做一些特别的处理:

    第一种方式:

    • 通过ajax一个属性traditional:true来指定参数序列化时,不做深度序列化。
    • 通过JSON.stringify()将参数作为数组传递到后台,后台不能通过获取参数名的方式获取参数,需要通过inputstream流来读取参数。

    这种方式我们传递的参数form-data中,每个参数在传递的过程中有一个参数名,这里叫ids,如果不做traditional:true的设置,参数传递中是这样子参数名ids后面加入了[],服务端是无法通过参数名获取参数的: 

    当设置traditional:true之后,参数变为这样子: 

    这种参数传递的方式,后端可以直接通过参数名ids来获取参数值,获取的参数也是一个数组。 

    第二种方式:通过body传入一个数组,参数没有名字,后端需要通过流来读取。

     

    这种方式form-data是这个样子的:

     

    参数没有名字,后端需要通过输入流来读取body中的数据。这里需要注意一点,如果还有别的参数,获取body中的参数一定要在别的参数取之前获取。否则一旦通过request.getParameter()之后,body中的参数就会失效。

     

     

    展开全文
  • //将json数组转换为json字符串 var requestBody=JSON.stringify(array); //输出日志 console.log(requestBody.length) $.ajax({ url:"send/array.html", data:requestBody, type:"post", contentType:"application/...

    前端代码

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%
        String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/";
    %>
    <html>
    <head>
        <base href="<%=basePath%>">
        <title>Title</title>
        <script type="text/javascript" src="jquery/jquery-2.1.1.min.js"></script>
        <script type="text/javascript">
            $(function () {
                $("#btn1").click(function () {
                    var array=[1,2,3];
                    //将json数组转换为json字符串
                    var requestBody=JSON.stringify(array);
                    //输出日志
                    console.log(requestBody.length)
                    $.ajax({
                        url:"send/array.html",
                        data:requestBody,
                        type:"post",
                        contentType:"application/json;charset=utf-8",
                        dataType:"json",
                        success:function (data) {
                            $("#tex").val(data)
                        },
                        error:function (data) {
                            // alert(data)
                        }
                    })
                })
            })
        </script>
    </head>
    <body>
    <a href="test/ssm.html">ssm测试</a>
    <button id="btn1">提交</button>
    <textarea id="tex"></textarea>
    </body>
    </html>
    

    这里的请求方式必须是post,get方式访问的时候会出现400错误
    contentType:“application/json;charset=utf-8”, 这个也是必须写的不写就会报错

    后端接收

        @ResponseBody
        @RequestMapping(value = "/send/array.html")
        public Object receiveArray(@RequestBody List<Integer> array){
    
    //        Logger logger= (Logger) LoggerFactory.getLogger(testHandler.class);
            System.out.println(array);
            return "success";
        }

    @RequestBody 必须使用。否则也接收不到

    展开全文
  • 在JS中后台传递数组参数,如果数组中放的是对象类型,传递到后台是显示的只能是对象字符串--[object Object],具体的原因及解决方法如下,有类似问题的朋友可以参考下
  • AJAX后端接收数组

    2021-06-01 15:49:54
    目的是将多选框中的值传递给后台 html内容: <input type="checkbox" class="option" value="1"> <input type="checkbox" class="option" value="2"> <input type="checkbox" class="option" ...

    目的是将多选框中的值传递给后台

    html内容:

    <input type="checkbox" class="option" value="1">
     
    <input type="checkbox" class="option" value="2">
     
    <input type="checkbox" class="option" value="3">
     
    <input type="checkbox" class="option" value="4">
     
    <input type="checkbox" class="option" value="5">
    

    js内容:

     var id = [];
    			for(var i=0;i<$(".option").length;i++){
    				if($(".option").eq(i).prop("checked")){
    					id.push($(".option").eq(i).val())
    				}	
    			}
    			$.ajax({
    	    		type:"post",
    	    		url:"safeHomework/issuedWork",
    		   		async:false,
    	    		data:{id:id},
    	    		success:function(data){
    	    			layer.closeAll();   //关闭弹窗
    	    		}
     
    	    	})
    

    后台接收:

    @RequestMapping(value="/issuedWork",method=RequestMethod.POST)
    	public @ResponseBody String issuedWork(@RequestParam(value="id[]") Integer[] id) {
    		for (Integer integer : id) {
    			System.out.println(integer.intValue());
    		}
    		return "1";
    	}
    

    原文链接:https://blog.csdn.net/qq_33633350/article/details/79700285

    展开全文
  • } } } } $.ajax({ dataType: "json", url: "/user/deleteList.do", type: "post", data: JSON.stringify(arr), contentType: "application/json;charset=UTF-8", dataType:"json", success: function (data) { ...

    错误1:org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘application/json;charset=UTF-8’ not supported。

    原因:如果想用springmvc @RequestBody注解做提交json字符串自动绑定到pojo入参时,类型需要是"application/json;charset=UTF-8",否则会抛"not supported"异常。

    错误2:JSON parse error: Unrecognized token ‘id’: was expecting (‘true’, ‘false’ or ‘null’)。

    原因:返回数据格式不规范.当dataType指定为json后,1.4+以上的jquery版本对json格式要求更加严格.如果不是严格的json格式,就不能正常执行success回调函数。即写法data: { “ids” : JSON.stringify(str) } 是错误的,正确写法是data:JSON.stringify(str)。

    参考:https://blog.csdn.net/qq_36802726/article/details/88419297

    举例:

    function deleteList(){
    
                var arr=new Array();
    
                if(confirm("您确定要删除选中条目吗?")){
                    var flag = false;
                    //判断是否有选中条目
                    var cbs = document.getElementsByName("ids");
                    for (var i = 0; i < cbs.length; i++) {
                        if(cbs[i].checked){
                            //有一个条目选中了
                            flag = true;
                            break;
                        }
                    }
                    if(flag){//有条目被选中
                        for (var i = 0; i < cbs.length; i++) {
                            if(cbs[i].checked){
                                //有一个条目选中了
                                arr.push(cbs[i].value);
                            }
                        }
                    }
                }
    
                $.ajax({
                    dataType: "json",
                    url: "/user/deleteList.do",
                    type: "post",
                    data: JSON.stringify(arr),
                    contentType: "application/json;charset=UTF-8",
                    dataType:"json",
                    success: function (data) {
                        alert(data.message);
                        if (data.success) {
                            window.location.href = "/user/findAll.do";
                        } else {
    
                        }
                    },
                    error: function (e) {
                        alert("出现错误");
                        location.reload();
                    }
                });
            }
    
    @ResponseBody
        @RequestMapping("/deleteList.do")
        public Result deleteList(@RequestBody String[] ids){
            for (String userid:ids) {
                userService.delete(userid);
            }
            return new Result(true, "删除成功", null);
        }
    
    展开全文
  • }, complete: (res) => {}, }) 在header中添加’content-type’: ‘application/x-www-form-urlencoded’ 这点很重要:因为默认get请求的编码格式不适合于微信小程序中request的post请求,如果你用的是ajax,这里不...
  • 一般情况下我们使用ajax向后台传送数据默认格式是: contentType: "application/x-www-form-urlencoded; charset=UTF-8", 传输为key-value格式,例如: name:"zhangsan" 但是传送的都是String的值,因此如果要传送:...
  • $.ajax向后端传多个数组 例: A:["刁民","良民"] B:["敢杀我的马","欺负老实人"] ajax同时传参 例: $.ajax({ type: 'POST', url: "../xxxx/", dataType: 'json', contentType: 'application/json',//这个...
  • ajax向后台传数组

    2017-09-20 21:43:19
    ajax向后台传数组
  • 这里遇到了两个问题:1.ajax传递数组后台接收不了,2.当传递数组为空的时候系统空指针。  问题1: ajax传递数组后台接收不了   出现问题的1的原因是因为ajax的解析数组传到后台的时候为其参数名多加了一个...
  • 个人博客同步csdn 1. 后端方面 使用@RequsetBody注解接收List对象 @RequsetBody 2. 前端方面 在request中的参数不能填 params, 要填 data
  • 前端 function objectArrayPostTest(){ var testObjs = []; var testObj = {}; testObj.docId = "1"; testObj.vDocId = "2"; testObjs.push(testObj); var testObj2 = {};...$.ajax({ url:"file/objectA
  • 如下所示: JSP var vipFee= new Array; //遍历选中的对象 $("#feeList :checkbox:checked").each(function(i){ vipFee.push({...$.ajax({ type:"POST", url: "addVipFeeList", async:false, dataType:
  • $.ajax({ type: "post", url: baseUrl + "/stock/detail",//对应controller的URL async: true, dataType: 'json', contentType : "application/json", data: JSON.stringify(ids),//json对象转化为json字符串 ...
  • 在做前后端对接的时候遇到的一个传数组的问题,首先,axios的post方法传值,我选择了使用实例化一个FormData对象来传值,然后后端使用post正常取值嘛。但是我这个数据比较复杂,最后有一个值是数组。 我在采用和别的...
  • 通过ajax提交数组时,会自动在所设定的参数后面增加中括号:“[]”,导致后端spring MVC中的@RequestParam获取不到参数。 解决方法: ajax请求时增加:traditional:true就可以正常提交了。原因如下: jQuery会...
  • AJAX 传递二维数组后端

    千次阅读 2018-12-29 00:16:34
    var save_plan=[]; $.each(checkStatus.data,function (k,v) { if(v.outton&gt;0&amp;&amp;v.inv&gt;0&amp;&amp;v.outv&gt;0&amp;&amp;v.status!... var save_p...
  • 当使用ajax传递二维数组后端时,要讲其转换为json。 var selectProduct; //一个二维数组 var newSelectProduct = { }; // 定义一个空对象 for (var i = 0; i < selectProduct.length; i ++) { ...
  • jQuery.ajax向后台传递数组问题

    万次阅读 2016-10-24 17:39:30
    jQuery.ajax向后台传递数组问题 今天重温了一个问题,jQuery.ajax向后台传递一个数组,而在后台接收不到该值 前台js方法部分代码如下: //创建一个测试数组 var boxIds = new Array(); boxIds.push(12182); ...
  • 1.前端不做处理, var roleIds = new Array(); $("input[name='uRole']:checked").each(function(index,element){ let roleId = $(element).attr("data-roId");... $.ajax({ type: "post", url: baseUrl + "/user
  • jsp前端 后端 此处用的是SpringMVC 控制台输出的是 0 1 2 3
  • ajax向后台传递数组乱码解决方法

    千次阅读 2017-05-07 12:44:21
    var result = ['1','2','3']; $.ajax({ type: "GET", url:"http://xxxxxxxx", data:{   groups:result,  }, dataType:'json',  success: function (Json) {  console.log("success")
  • 使用jquery ajax前端后台传数据的时候有时候会传数组数据,而java后台同学接收到的数据不对,添加traditional:true问题解决

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,171
精华内容 4,468
关键字:

ajax向后端传递数组