【发布时间】:2018-09-14 18:12:27
【问题描述】:
所以我想制作一个纯 html 和 javascript 表单并将其提交到服务器。
这是我的html表单代码:
<form id="email-signup" action="http://www.server.com" method="post">
<input id="firstname-input" type="hidden" name="firstname" value="">
<input type="text" name="email" placeholder="Input Email">
<input type="hidden" name="campaign[id]" value="1">
<input type="hidden" name="campaign[name]" value="Text Campaign">
<input type="submit" value="Submit">
</form>
这是我的 javascript 代码:
var element = document.getElementById("email-signup");
element.addEventListener("submit", function(event) {
event.preventDefault()
fetch("http://www.endpoint.api", {
method: "POST",
body: new FormData(document.getElementById('email-signup'))
})
})
.then(() => {
alert('Selamat email anda sudah terdaftar!')
})
问题是,每当我向该表单提交电子邮件时,它都会将我重定向到一个新页面,并回复成功。我想防止这种情况发生,而是会弹出一个警报,告诉我电子邮件提交成功。
【问题讨论】:
-
开发者工具控制台中的任何内容表明 javascript 甚至可能没有运行?比如,一个错误或某事?
-
http://www.server.com是否有可能在发布时导致重定向的服务器端代码?如果有服务器端代码,请在此处发布。 -
@NightOwl888
http://ae683b14f332321a8t16b02dba7d519b-2052846694.ap-southeast-1.elb.amazonaws.com/实际上这是 api。也许这是导致重定向的原因? -
@JaromandaX 开发者工具控制台没有错误。它放在该表单上的电子邮件已成功存储在服务器中。但是当我成功提交电子邮件时它仍然重定向我。我认为我从 FormData 发布电子邮件的方式很好嗯
-
考虑到
addEventListener不会返回带有.then方法的对象,我非常怀疑您在开发人员工具控制台中没有错误 - 也许您不知道自己在做什么正在寻找...在event.preventDefault();之后添加console.log("in handler");- 如果控制台中没有出现,那么很明显您的处理程序没有被调用
标签: javascript html forms http-post fetch-api