好久没有写前端,最近又需要做一个管理后台,发现报错Uncaught TypeError: Illegal
仔细研究了一下发现,自己对ajax了解的并不深刻。具体的问题如下:
html代码:
<input type="file" id="file" name="file" />
<button type="button" class="btn btn-default btn-sm" onclick="UcPermission.importExcel();">
<i class="fa fa-arrow-circle-up"></i>批量导入权限(当前权限会被清空)</button>
js代码:
"importExcel":function(){
var file = document.getElementById("file").files[0];
var formData = new FormData();
formData.append("file",file);
console.log("formData:"+formData.toString());
$.ajax({
type: "POST",
dataType: "json",
url: contextPath + "/ucPermission/importExcel",
data: formData,
async: false,
contentType:false,
success: function(data) {
if(data.code == 200) {
alert("上传成功")
UcPermission.initUcPermissionList();
UcPermission.initUcPermissionTree($("#parentID").val(), $("#parentName").val());
} else {
parent.showInfo(data.msg);
}
}
});
},
解决方案:
ajax中加入processData:false,
原理:
processData,类型:Boolean
默认值: true。默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false
网友评论