javascript - 为什么javascript-ajax多次提交表单
问题描述
我正在做单页应用程序。如果我在表单上输入内容并单击提交按钮,那么它会发送一个请求。第二次,如果我键入内容并单击它会发送两个请求。第三次它发送三个请求,依此类推。为什么是这样?我在javascript代码中做错了吗?
这是我的html
function reply_mail(idi) {
document.querySelector('#emails-view').style.display = 'none';
document.querySelector('#compose-view').style.display = 'none';
document.querySelector('#reply-view').style.display = 'block';
fetch(`/emails/${idi}`)
.then(response => response.json())
.then(email => {
// Print email
var strp = `${email.subject}`;
var ini = 'Re: '
document.querySelector('#reply-recipients').value = `${email.sender}`;
if (strp.slice(0, 4) == 'Re: ') {
document.querySelector('#reply-subject').value = `${strp}`;
} else {
document.querySelector('#reply-subject').value = ini.concat("", strp);
}
var output = `On ${email.timestamp} ${email.sender} wrote:|
${email.body} |
`;
// ... do something else with email ...
document.querySelector('#reply-body').value = output;
// ... do something else with email ...
console.log(email);
});
document.querySelector('#reply-submit').addEventListener('click', function(event) {
event.preventDefault();
rec = document.querySelector('#reply-recipients').value;
sub = document.querySelector('#reply-subject').value;
bod = document.querySelector('#reply-body').value;
fetch('/emails', {
method: 'POST',
body: JSON.stringify({
recipients: rec,
subject: sub,
body: bod
})
})
.then(response => response.json())
.then(result => {
// Print result
if ('error' in result) {
console.log(result);
document.querySelector('#reply-error').style.display = 'block';
document.querySelector('#reply-error-i').innerHTML = `<p>${result['error']}</p>`;
} else {
console.log(result);
document.querySelector('#reply-error').style.display = 'none';
load_mailbox('sent');
}
});
})
}
```
<div id="reply-view">
<h3>New Email</h3>
<div class="alert alert-danger" role="alert" id="reply-error">
<div id="reply-error-i">
</div>
</div>
<form id="reply-form">
<div class="form-group">
From: <input disabled class="form-control" value="soham@example.com">
</div>
<div class="form-group">
To: <input id="reply-recipients" class="form-control">
</div>
<div class="form-group">
<input class="form-control" id="reply-subject" placeholder="Subject">
</div>
<textarea class="form-control" id="reply-body" placeholder="Body"></textarea>
<input type="submit" id="reply-submit" class="btn btn-primary" />
</form>
</div>
解决方案
推荐阅读
- javascript - 在javascript代码中将文本的属性更改为“只读假”
- r - 使用 dplyr 和调查对数据进行分组时出错
- tensorflow - ModuleNotFoundError:没有名为“tensorflow_datasets”的模块
- java - Array(String[]) 中的 String 和 String 是不一样的,即使是
- html - 如何防止绝对定位的img移动
- vue.js - Vue + jest 调试
- asynchronous - Vala 中委托的异步作用域是什么?
- php - 使用ajax时如何在php页面上隐藏echo json_data?
- android - 带有 Xamrin Forms 的 Firebase 自定义声音通知适用于 IOS,但在应用未运行时不适用于 android
- django - django REST framework api 不使用模型