上代码:
//lic-img == 图片 input 的 id
var uplaod = {
fileInput: $("#lic-img").get(0),
fileFilter: [],
filter: function(files){
var arrFiles = [];
for (var i = 0,file;file=files[i]; i++) {
if (file.type.indexOf('image') === 0) {
if (file.size >= 512000) {
alert("该文件"+file.name+"过大,请上传小于500kb图片");
}else{
arrFiles.push(file);
}
}else{
alert("该文件"+file.name+"不是图片");
}
}
// console.log(arrFiles);
return arrFiles;
},
getImg: function(e){
var files = e.target.files || e.dataTransfer.files;
this.fileFilter = this.filter(files);
return this;
},
onUpImg: function(){
var that = this;
$.ajax({
url: 'url',
type: 'POST',
processData:false,
contentType: false,
data: {files: that.fileFilter[0]},
success: function(data){
console.log(data)
}
})
},
init: function(){
var that = this;
if (this.fileInput) {
this.fileInput.addEventListener("change",function(e){
that.getImg(e);
that.onUpImg();
},false);
}
}
}
uplaod.init();
})
为什么发送请求的时候,上传的数据为空呢?发送成功200
HTML里面的form表单属性有这个enctype="multipart/form-data",然后发送图片上传到后端的时候,后端给拦截了,所以一直没收到,后端以为我发的是空的。他刚解决,供大家参考
$.ajax需要注意的一些地方:
1.data主要方式有三种,html拼接的,json数组,form表单经serialize()序列化的;通过dataType指定,不指定智能判断。
2.$.ajax只提交form以文本方式,如果异步提交包含<file>上传是传过不过去,需要使用jquery.form.js的$.ajaxSubmit