javascript - 将事件侦听器添加到提交按钮以运行函数
问题描述
嘿伙计们,我正在用 javascript 编写一个应用程序,并且我正在尝试向提交按钮添加一个事件侦听器,该按钮是某人单击以发送电子邮件的“发送电子邮件”按钮。
我知道该代码适用于添加电子邮件,因为当我在事件侦听器之外运行它时,它会发送电子邮件。因此,出于某种原因,我的事件侦听器存在问题。
目前 - 当我点击发送邮件按钮时没有任何反应。我没有收到任何错误,它只是将我返回到收件箱。
我确定事件侦听器由于某种原因无法正常工作。
有人看到我做错了什么吗?谢谢
html:
<div id="compose-view">
<h3>New Email</h3>
<form id="compose-form"
method="POST">
{% csrf_token %}
<div class="form-group">
From: <input disabled class="form-control" value="{{ request.user.email }}">
</div>
<div class="form-group">
To: <input id="compose-recipients" class="form-control">
</div>
<div class="form-group">
<input class="form-control" id="compose-subject" placeholder="Subject">
</div>
<textarea class="form-control" id="compose-body" placeholder="Body"></textarea>
<input type="submit" id="sendEmail" class="btn btn-primary"/>
</form>
</div>
js:
const element = document.getElementById('sendEmail');
element.addEventListener('click', function() {
fetch('/emails', {
method: 'POST',
body: JSON.stringify({
recipients: 'card51short@gmail.com',
subject: "buglets",
body: 'Hes a fat one'
})
})
.then(response => response.json())
.then(result => {
// Print result
console.log(result);
});
});
}
解决方案
这是因为您的表单方法是 post ,当您单击按钮时它将发出一个 post 请求,并且 javascript 不会运行,因为它试图向一个不存在的端点发出 post 请求。因此,您需要method
从表单中删除 html 属性。
推荐阅读
- tensorflow - tensorflow-dataset-如何使用 tfds 格式制作我们自己的数据集?
- json - 如何使用 Json Schema 创建具有类型和条件的 JSON 格式?
- stream - MOA CluStream:在计算 k 均值后,我们应该如何“命名”不位于任何宏集群内的微集群?
- linux - gitlab-CI 管道:尝试删除文件时出现 lftp 错误 550
- json - 如何在 VBA 中使用 ParseJson 来获取选定的项目作为响应?
- docker - 如何在 Kubernetes 中找到已部署的 Pod 的发布版本?
- php - 在 PHP 脚本中执行 WP CLI 命令
- typescript - 找出正确的类型 - Typescript 接口方法重载
- python - 如果键不在范围内,如何删除字典中的值?
- python - 使用 Python 脚本设置环境环境变量