Next.js Javascript呈现的netlify表单未在netlify上提交,它未显示任何提交。我正在使用nextjs
上面是静态html表单。 我在下面添加javascript呈现表单:Next.js Javascript呈现的netlify表单未在netlify上提交,它未显示任何提交。我正在使用nextjs,next.js,form-submit,netlify,ssg,netlify-form,Next.js,Form Submit,Netlify,Ssg,Netlify Form,上面是静态html表单。 我在下面添加javascript呈现表单: <form name="contact" method="POST" data-netlify='true' action="/pages/success" hidden> <input type="text" name="Name" /> <input type=&quo
<form name="contact" method="POST" data-netlify='true' action="/pages/success" hidden>
<input type="text" name="Name" />
<input type="email" name="Email" />
<textarea type="textarea" name="Msg"></textarea>
</form>
const WriteToUs=()=>{
常量[formData,updateFormData]=useState({
名称:“”,
电子邮件:“”,
消息:“”
});
常量handleChange=e=>{
常量{name,value}=e.target;
updateFormData(prevState=>({
…国家,
[名称]:值
}));
};
函数编码(数据){
返回Object.keys(数据)
.map(key=>encodeURIComponent(key)+“=”+encodeURIComponent(data[key]))
.加入(&)
}
const handleSubmit=(事件)=>{
event.preventDefault()
获取(“/contactus”{
方法:“张贴”,
标题:{“内容类型”:“application/x-www-form-urlencoded”},
正文:编码({
“表单名称”:event.target.getAttribute(“名称”),
“Name”:formData.Name,
“Email”:formData.Email,
“Msg”:formData.Msg
})
})
。然后(()=>警报(“已提交”)。捕获(错误=>警报(错误))
}
返回(
发送
);
}
我在提交表格时收到了状态代码200,并且我能够看到正文部分中的所有字段值。我想不出这个问题。
此外,Netlify检测到活动表单设置,但尚未收到提交。
请帮忙
const WriteToUs = () => {
const [formData, updateFormData] = useState({
Name: '',
Email: '',
Msg: ''
});
const handleChange = e => {
const { name, value } = e.target;
updateFormData(prevState => ({
...prevState,
[name]: value
}));
};
function encode(data) {
return Object.keys(data)
.map(key => encodeURIComponent(key) + "=" + encodeURIComponent(data[key]))
.join("&")
}
const handleSubmit = (event) => {
event.preventDefault()
fetch("/contactus", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: encode({
"form-name": event.target.getAttribute("name"),
"Name": formData.Name,
"Email": formData.Email,
"Msg": formData.Msg
})
})
.then(() => alert("submitted")).catch(error => alert(error))
}
return (
<Form name="contact" onSubmit={handleSubmit}>
<input type="hidden" name="form-name" value="contact"/>
<FormGroup>
<Input type="text" name="Name" onChange={handleChange} value={formData.Name}
id="exampleName" placeholder="Name" className={styles.formcontrol} />
</FormGroup>
<FormGroup>
<Input type="email" name="Email" onChange={handleChange} value={formData.Email}
id="exampleEmail" placeholder="Business-Email" className={styles.formcontrol}/>
</FormGroup>
<FormGroup>
<Input type="textarea" name="Msg" onChange={handleChange} value={formData.Msg}
id="exampleText" placeholder="Message" className={styles.textarea}/>
</FormGroup>
<div className="d-flex justify-content-center justify-content-lg-start"><Button
type="submit" className={classnames({
[styles.send]: true,
"btn": true
})}>Send</Button></div>
</Form>
);
}