Javascript 在ajax回调函数的每个循环后追加输出
为了找到一种显示ajax回调函数所呈现结果的最佳方式,我花了2个多小时的时间,让我解释一下我到底想做什么来更好地理解 我有一个“发送”按钮,在单击事件时,我定义了一个函数,将$category_id发送到另一个页面,然后从数据库中获取所有收件人,并为每个收件人发送电子邮件。现在,整个过程运行良好,但每次循环后:Javascript 在ajax回调函数的每个循环后追加输出,javascript,php,ajax,asynchronous,Javascript,Php,Ajax,Asynchronous,为了找到一种显示ajax回调函数所呈现结果的最佳方式,我花了2个多小时的时间,让我解释一下我到底想做什么来更好地理解 我有一个“发送”按钮,在单击事件时,我定义了一个函数,将$category_id发送到另一个页面,然后从数据库中获取所有收件人,并为每个收件人发送电子邮件。现在,整个过程运行良好,但每次循环后: (foreach ($recipients as $recipient)) {send_mail(); echo "email sent successfully to ....";}
(foreach ($recipients as $recipient))
{send_mail();
echo "email sent successfully to ....";}
我将返回一份回音声明,告知该电子邮件已正确发送给该收件人。
Javascript函数被定义为将这些echo结果附加到div中,但它不是在渲染后显示每条语句,而是将它们全部收集起来并立即显示
$.ajax({
async: true,
url: 'send_emails.php?category='+category,
success: function(r){
$('#status').append(r); //this happens all at once
}
});
有没有更好的办法来实现我的目标
提前感谢当XHR状态更改为
200
(成功)时,将触发调用ajax的Success
事件。这仅在后端完成处理时发生
您需要检查的是XHRreadyState
属性。在处理请求期间设置为“3”。然后,您可以将PHP脚本中的更新发送到该网页
我认为问题在于,您应该继续告诉用户,电子邮件已在ajax回调中成功发送->您知道(!err)是否成功,然后您的请求已成功->输出消息已成功发送
“一次”显示每条消息是因为它们被放入堆栈并被称为“ammediatly”-您的ajax调用与此异步,并且在实际发送邮件时会触发回调。我不明白您的目标是什么,是否要逐个发送电子邮件?或者您想在html中以不同元素显示消息吗?不,我想在每次发送电子邮件时在html页面中显示消息(电子邮件已成功发送…)。这正是我想做的!非常感谢,你救了我一天我想这不是我真正想要的,脚本每1秒或按照你的定义显示一次消息,但我正在寻找一种在每次循环后显示消息的方法!!