我为我们的客户端电子邮件更新创建了一个简单的邮件程序,但是我怎样才能一个一个地发送数据并在服务器端处理每个数据
html:
<p class="response"></p>
<form id="send_updates">
{% csrf_token %}
<textarea name="mail-list" class="mails" id="mails"></textarea>
<button type="submit"> start sends </button>
</form>
JavaScript:
let mails = $('#mails').val().split('\n');
for(let i = 0; i <= cc.length; i++){
$.ajax({
cache: false,
type: 'post',
url: "{% url 'send_mail' %}",
data: {'email': mails[i]},
async: true,
beforeSend:function(xhr, settings){
xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
};
success: function(data){
if (data.success) == true{
$('.response').append(mails[i] + ' sent!')
}else{
$('.response').append(mails[i] + ' not sent!')
};
}
});
但是!无论是否成功,它都会发送所有请求而不等待
编辑:
如果该电子邮件发送成功与否,我们要逐一监控!
最佳答案
尝试设置
async: false,
如下图:
let mails = $('#mails').val().split('\n');
for(let i = 0; i <= cc.length; i++){
$.ajax({
cache: false,
type: 'post',
url: "{% url 'send_mail' %}",
data: {'email': mails[i]},
async: false,
beforeSend:function(xhr, settings){
xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");
};
success: function(data){
if (data.success) == true{
$('.response').append(mails[i] + ' sent!')
}else{
$('.response').append(mails[i] + ' not sent!')
};
}
});
关于javascript - 如何在循环中使用ajax发送单个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57831741/