formData不为空,但sails.js使用vue.js获取空的req.body
我正在同时使用vue.js和sails.js,我需要创建一个带有图片和其他文本值的产品,我在整个表单中创建了一个formData对象,并向其中添加了一些数据。当我打算注销数据时,它不是空的,但当我使用formData不为空,但sails.js使用vue.js获取空的req.body,vue.js,sails.js,form-data,Vue.js,Sails.js,Form Data,我正在同时使用vue.js和sails.js,我需要创建一个带有图片和其他文本值的产品,我在整个表单中创建了一个formData对象,并向其中添加了一些数据。当我打算注销数据时,它不是空的,但当我使用req.body或req.params时,它显示空对象。 我的代码如下: var form = document.querySelector('form'); var formData = new FormData(form); formData.append('owner', cid);
req.body
或req.params
时,它显示空对象。
我的代码如下:
var form = document.querySelector('form');
var formData = new FormData(form);
formData.append('owner', cid);
formData.append('name', this.name);
formData.append('slug', this.slug);
formData.append('description', this.editorData);
formData.append('tags', this.tags);
formData.append('categories', this.categories);
formData.append('stock', this.stock);
formData.append('price', this.price);
for (let [key, value] of formData.entries()) {
console.log(key, value);
}
axios.post(API + 'product/new', formData)
.then(function(response) {
swal("ok",{
icon: "success",
button: false,
});
})
.catch(function(error) {
swal("not ok",{
icon: "error",
button: false,
});
console.log(error.response);
// remain silent
});
我刚刚解决了这个问题,因为我已经做了三天了。 解决方案很简单,SailsJs req.body对象将只读取formdata对象或您传递给它的任何对象,只要它不在文件对象之后(如果您有)
为了更好地理解,请查看req.body上的文档如果您正在上载文件,我认为您需要使用内容类型multipart/form数据对表单进行编码。因此,您的axios帖子需要类似于
axios({method:'post',url:API+'product/new',data:formData,config:{headers:{'Content-Type':'multipart/form data'}})“如果请求包含一个或多个文件上载,则在req.body
中只有在第一个文件参数之前发送的文本参数可用”这是否意味着,在客户端,HTML应该最后包含文件类型input
元素?(或者,对于客户端JS,就像您的例子一样,formData
应该被构建成文件对象最后追加?)