我的问题是前台数据封装成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
按照下面的模版,修改后试一试
$.ajax({
url: "stash.php",
type: "POST",
data: formData,
cache: false, // 不缓存数据
processData: false, // 不处理数据
contentType: false, // 不设置内容类型
success:function (data) { //成功回调
console.log(data);
}
});
看下Spring 序列化的知识,应该是你传的格式不对
你前端传递的数据是数组类型,那么发送到后台时就是以数组格式的,同一个请求参数,对应两个值的。
{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。
这样即使直接用 getParameter 得到的也是个数组的。