如果输入文件作为无格式的ajax请求中的数组元素传递,为什么数组对象变为空

时间:2019-02-25 00:05:46

标签: javascript jquery ajax form-data asyncfileupload

当我尝试在选择后上传文件而不将其分配给数组时,它工作正常,但是当将文件对象分配为数组的元素时,$ _ FILES变为空

HTML

<input type='file' name='image' class='image'>

脚本

var img = $('.image').prop('files')[0];
var ajax_data=['product','price',img];

var postData = new FormData();
    postData.append('data',ajax_data);


$.ajax({
     type: "POST",
     processData: false, 
     contentType: false, 
     url: base_url + "/admin/create_bill",
     data:postData,
     success: function (data) {
                  alert('data has been submitted')
            }
 });
}
});

注意: 如果使用JSON.stringify(ajax_data),则所有数组元素都成功传递给服务器,只有文件对象为空 虽然我不使用JSON.stringify()$ _FILES变为空

简单地说,我想传递一个包含文件对象和纯字符串数据的数组

1 个答案:

答案 0 :(得分:0)

您可以POST FormData指向服务器,包括必要的数据。如果需要上传数组,则可以将File对象转换为data URL字符串,将数组转换为JSONPOST JSON字符串到服务器。