AJAX值传递到后台的诡异问题

我的问题是前台数据封装成formdata数据类型后,通过AJAX传值到后台springmvc方式,竟然带有,的值被分成了2个值,?????代码如下,有没有遇到过的,以下为测试代码,写代码这么多年,还是头一次见这样的

  var formData = new FormData();
  var arar = new Array();
            arar.push('a/b/c,a.xml')
            arar.push('a/b/d.xml')
            formData.append('testList', arar)

                         $.ajax({
                data: formData,
                type: "POST",
                url: url,
                async: true,
                cache: false,
                contentType: false,
                processData: false,
                success: function (msg) {
                    window.parent.document.getElementById('coverbehidepage').style.display = "none";
                    var dataa = eval(msg)
                    var i = 0;
                    if (dataa[0].isSameFileUploadFolderName != 'OK') {
                        alert(dataa[0].isSameFileUploadFolderName);
                        flaggg = false;
                        clearUploder()
                        return flaggg;
                    } else {
                        if (url == "/fileupdown/checkmessagefolder") {
                            newUrlArray = dataa[0].allPath;
                            if (newUrlArray.length > 0) {
                                updateFilePathBeforeSave(filePathName);
                            }
                        }
                        flaggg = true;
                        return flaggg;
                    }
                },
                error: function (msg) {
                    window.parent.document.getElementById('coverbehidepage').style.display = "none";
                    alert("查询失败");
                    flaggg = false;
                    clearUploder()
                    return flaggg;

                }
            });

                        后台不论是list还是string[]类型接收,带有,的值都被打断成了2个值 ,如上面两个值传到后台就是以下三个值
                      a/b/c
                        a.xml
            a/b/d.xml

3个回答

按照下面的模版,修改后试一试

$.ajax({
  url: "stash.php",
  type: "POST",
  data: formData,
  cache: false,        // 不缓存数据
  processData: false,  // 不处理数据
  contentType: false,   // 不设置内容类型
  success:function (data) {           //成功回调
      console.log(data);
  }
});
weixin_44100282
一颗小小草 谢谢
大约一年之前 回复
weixin_44100282
一颗小小草 跟ajax是没有关系,测式了几次,猜想是spring解析前端数组时遇,给默认split了
大约一年之前 回复

你前端传递的数据是数组类型,那么发送到后台时就是以数组格式的,同一个请求参数,对应两个值的。

{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。

这样即使直接用 getParameter 得到的也是个数组的。

weixin_44100282
一颗小小草 谢谢
大约一年之前 回复

看下Spring 序列化的知识,应该是你传的格式不对

weixin_44100282
一颗小小草 好的,谢谢
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问