input 上传图片,我已经把后台需要的数据组织好了,但是通过点击按钮把这个图片数组传给后台时,这个参数一直都是undefined搞不懂了?
//input change事件
var fileInput = document.createElement('input');
fileInput.setAttribute('type', 'file');
fileInput.setAttribute('accept', 'image/*');
fileInput.setAttribute('id', 'image-' + imageIndexIdNum);
fileInput.addEventListener('change', function(event) {
var file = fileInput.files[0];
var fileEntity = {};
if (file) {
var reader = new FileReader();
reader.onload = function() {
var fileArr = [];
//处理 android 4.1 兼容问题
var base64 = reader.result.split(',')[1];
var dataUrl = 'data:image/png;base64,' + base64;
var fileName = file.name;
fileEntity.fileName = fileName;
fileEntity.fileUrl = dataUrl;
fileArr.push(fileEntity);
**//这里把这个数组传给buildJson这个方法,点击上传按钮时,不触发这个方法,这个fileArr中是多个图片组成的数组,一直报这个数组参数为undefined**
buildJson(fileArr);
placeholder.style.backgroundImage = 'url(' + dataUrl + ')';
}
reader.readAsDataURL(file);
placeholder.classList.remove('space');
}
});
点击上传的按钮时,是执行的 post 的方法,判断下来就是说我点击这个上传的按钮时不会触发input的change事件?所以拿不到数据?
$(function(){
$('#ticketSave').on('tap', function() {
addTicket();
});
});
function buildJson(fileArr){
var title = jQuery('.js-ticket-title').val();
var categoryValue = jQuery(".js-category").val();
var modelValue = jQuery('.js-model').val();
var troubleValue = jQuery('.js-trouble').val();
var textareaValue = jQuery('.js-textarea').find('#textarea').val();
var imgList = fileArr; **//唯有它一直是undefined**
var jsonObj = {
'title': title,
'product_id': modelValue,
'ticketcategories': categoryValue,
'content': textareaValue,
'imgList': imgList
}
return jsonObj;
}
//ajax post
function addTicket()
var url = baseUrl + '/ticket/index/save.html';
mui.ajax({
type: "post",
url: url,
data: buildJson(),
dataType: 'json',
timeout: 10000,
success: function(data) {
if(data.success == true) {
mui.back();
} else {
mui.toast(data.message);
}
},
error: function(data) {
if(data.success == false) {
mui.toast(data.message);
}
}
})
}
你这写法有问题吧,你ajax里调用buildJson(),此时没有传入fileArr,var imgList = fileArr; 这个就为undefined呀,上传可参考我的博客链接