怎么传的参数一直都是undefined

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);
            }
        }
    })
}
阅读 7k
1 个回答

你这写法有问题吧,你ajax里调用buildJson(),此时没有传入fileArr,var imgList = fileArr; 这个就为undefined呀,上传可参考我的博客链接

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题