Javascript 如何使用postMessage()方法将FormData发送给服务工作者
在提交表单之前,我试图使用postMessage()方法将formdata对象发送给服务人员 我尝试了多种解决方案,但我总是收到无法克隆的错误或空表单数据 我尝试过的一些事情:Javascript 如何使用postMessage()方法将FormData发送给服务工作者,javascript,service-worker,progressive-web-apps,form-data,postmessage,Javascript,Service Worker,Progressive Web Apps,Form Data,Postmessage,在提交表单之前,我试图使用postMessage()方法将formdata对象发送给服务人员 我尝试了多种解决方案,但我总是收到无法克隆的错误或空表单数据 我尝试过的一些事情: var formData = new FormData(); formData.append('photo', image); formData.append('description', description); // attempt 1 var msg = { form_data: formData, }
var formData = new FormData();
formData.append('photo', image);
formData.append('description', description);
// attempt 1
var msg = {
form_data: formData,
}
// attempt 2
var msg = {
form_data: JSON.stringify(formData),
}
// attempt 3
var msg = {
form_data: JSON.stringify(formData.entries()),
}
// attempt 4
console.log(msg); // form data is either empty or I get an error depending on the attempt
swRegistration.active.postMessage(msg);
这起到了作用:
var object = {};
formData.forEach((value, key) => {object[key] = value});
var json = JSON.stringify(object);
var msg = {
form_data: json,
}
可能重复有趣的。。。Firefox允许通过postMessage克隆FormData对象。可以重写为
const object=object.fromEntries([…FormData])代码>