Javascript 使用ajax和现有表单数据上载文件
我正在用ajax保存一个表单,该表单从Vue JS发布数据Javascript 使用ajax和现有表单数据上载文件,javascript,ajax,vue.js,vuejs2,form-data,Javascript,Ajax,Vue.js,Vuejs2,Form Data,我正在用ajax保存一个表单,该表单从Vue JS发布数据 var data=JSON.stringify(vm.data) 我希望在同一请求中上载文件。我看到了一些使用FormData的示例。然而,我似乎找不到一个例子来说明如何添加文件,并且仍然在同一个请求中发布现有数据 我已经看到可以使用formData.append(name,value)添加特定字段但这似乎只是一次一个值。我发布的对象是一个对象数组,还包含子对象 是否可以一次性追加完整的数据,或者在遍历现有数据时必须追加每个项目 编辑-
var data=JSON.stringify(vm.data)代码>
我希望在同一请求中上载文件。我看到了一些使用FormData
的示例。然而,我似乎找不到一个例子来说明如何添加文件,并且仍然在同一个请求中发布现有数据
我已经看到可以使用formData.append(name,value)添加特定字段代码>但这似乎只是一次一个值。我发布的对象是一个对象数组,还包含子对象
是否可以一次性追加完整的数据,或者在遍历现有数据时必须追加每个项目
编辑-退出ajax请求:
var data = JSON.stringify(vm.data);
me.xhr({
headers: {'Content-Type': 'multipart/form-data'},
method: 'PUT',
url: 'swatch/' + vm.swatch.id + '.json',
callback: function(res) {
vm.saving = false;
try {
alert(res.message ? res.message : "Swatch saved successfully");
} catch (e) {
alert(res.message ? res.message : "Failed to save the changes, please try again.");
}
},
onerror: () => {
vm.saving = false;
alert('Failed to save the changes, please try again.');
},
data: { swatch: data }
}
您可以在以下位置使用FormData:
var data = JSON.stringify(vm.data);
var fd = new FormData();
fd.append('data',data);
fd.append('file',vm.fileUploaded);
me.xhr({
headers: {'Content-Type': 'multipart/form-data'},
method: 'PUT',
url: 'swatch/' + vm.swatch.id + '.json',
callback: function(res) {
vm.saving = false;
try {
alert(res.message ? res.message : "Swatch saved successfully");
} catch (e) {
alert(res.message ? res.message : "Failed to save the changes, please try again.");
}
},
onerror: () => {
vm.saving = false;
alert('Failed to save the changes, please try again.');
},
data: fd
}
组成部分:
<input type="file" @onchange="changed($event)">
new vue({
data:{fileUploaded:''},
methods:{
changed(event){
this.fileUploaded = event.target.files[0];
}
}
})
新vue({
数据:{fileUploaded:'},
方法:{
更改(事件){
this.fileupload=event.target.files[0];
}
}
})
您能展示一些您尝试过的代码吗?是的,您可以一次完成,为什么您需要追加,直接将JSON对象发送到服务器?您希望看到哪一部分?我已经发布了我目前如何发送数据。我不确定在使用formData时如何将其与文件组合。您使用ajax将数据发送到服务器的部分我添加了现有代码,其中尚未包含formData。它调用一个定制的xhr方法来提交请求。