js上传文件到后台时序列化数据
let fd = new FormData() // 定义传递的序列化对象,
for (let i = 0; i < addArr.length; i++) { // addArr是选中文件的输入框中的e.target.files
fd.append(addArr[i].name + "", addArr[i]) //通过append()将键名和值放进去
}
此时将上传的文件序列化后,如果还有其他需要上传的参数params
const params = {
company: $('.save-submit-data').eq(0).val(),
actual_initiator: $.trim($('.cascade-select-value').eq(0).text()),
person: $('.save-submit-data').eq(1).val(),
phone: $('.save-submit-data').eq(2).val(),
lend_date: $('.save-submit-data').eq(3).val(),
deadline: $('.save-submit-data').eq(4).val(),
amount: $('.save-submit-data').eq(5).val(),
estimation: $('.aboutGoods').eq(0).val(),
consignee: $('.getGoodsPerson').eq(0).val(),
consignee_phone: $('.getPersonName').eq(0).val(),
delivery_address: $('.getGoodsAddress').eq(0).val(),
images: JSON.stringify(purePicSave),
details: JSON.stringify(detail) // 数组必需使用JSON.stringfy转换为字符串
}
for (key in params) {
fd.append(key + "", params[key]) // 中间的双引号必填,因为这样才能正确序列化其他的参数传递给后台
}
$.ajax({
type: 'POST',
url: "{:url('examine_approve/lend')}", // 路径
data: fd, // 序列化对象
dataType: 'json', // 定义后台返回的数据类型
processData: false, // 必需
contentType: false, // 必需
success: function (res) {
if (res.code == 200) {
dialog.message(res.msg)
setTimeout(function () {
window.location.reload()
}, 1500)
} else {
dialog.message(res.msg, false)
$('.save-data').css('background', '#1E9FFF')
$('.save-data').attr('disabled', false)
}
},
error: function (err) {
console.log(err)
$('.save-data').css('background', '#1E9FFF')
$('.save-data').attr('disabled', false)
}
});