gpt4 book ai didi

javascript - 获取请求在移动设备上不起作用

转载 作者:行者123 更新时间:2023-12-03 02:35:19 25 4
gpt4 key购买 nike

我有一个联系表单,其中包含要发布的获取请求(formspree 联系表单)。在桌面和任何浏览器上它都可以正常工作,但一旦我进入移动设备,它就不行了..

表单的按钮显示“发送”,提交时该值更改为“发送..”,成功提交后显示“消息已发送”。在移动设备上,点击按钮后,它会切换到“发送..”,但之后什么也没有发生,而且我也没有收到提交的内容。

我尝试使用 GhoSTLab 进行调试,得到的只是:

formData.entries is not a function

我还没有通过查找找到任何解决方案,所以希望这里有人可能有想法..

这是我的代码,请注意,必须添加 if (typeof window !== undefined) 和 window.onload=function 才能正常工作,因为我使用 gatsby js 来构建我的网站。

if (typeof window !== `undefined`) {

window.onload=function(){

const sendButton = document.getElementById('send-button')

const formDataToJson = formData => {
const entries = formData.entries();
const dataObj = Array.from(entries).reduce( (data, [key, value]) => {
data[key] = value;
if (key === 'email') {
data._replyTo = value;
}
return data;
}, {});
return JSON.stringify(dataObj);
};


const postToFormspree = formData => fetch(`https://formspree.io/myemail@gmail.com`, {
method: 'POST',
body: formDataToJson(formData),
headers: {
'Content-Type': 'application/json'
}
}).then(r => r.json());

document.getElementById('myform').addEventListener('submit', function (e) {

e.preventDefault();

sendButton.value = 'Sending..';

const formData = new FormData(this);

postToFormspree(formData).then(response => {
sendButton.value = 'Message sent!';
myform.reset();

});
});

}
}

最佳答案

在 Barmar 指出正确的方向后,我只需添加 formdata-polyfill npm 包即可使其工作:https://www.npmjs.com/package/formdata-polyfill

然后在我的 main.js 中添加

var WebFont = require('webfontloader');

像这样:

if (typeof window !== `undefined`) {

window.onload=function(){

require('formdata-polyfill')

.....

在移动设备上部署并在 Chrome 和 FF 中进行测试,到目前为止工作正常

关于javascript - 获取请求在移动设备上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48553781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com