在ajax回调函数的每个循环之后附加输出
Append output after each loop on an ajax call back function
我们花了2个多小时试图找到一种最佳的方式来显示ajax回调函数呈现的结果,让我解释一下我到底想做什么来更好地理解。。。
我有一个按钮"发送",在点击事件中,我定义了一个函数,将$category_id发送到另一个页面,然后在那里我从数据库中获取所有收件人,并为每个收件人发送一封电子邮件。现在整个过程运行良好,但在每个循环之后:
(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
}
});
有更好的方法来达到我的目标吗?
提前感谢
200
(成功)时,会触发调用ajax的Success
事件。只有当后端完成处理时才会发生这种情况。
您需要检查的是XHR readyState
属性。在处理请求期间设置为"3"。然后,您可以将PHP脚本中的更新发送到网页。
这里有一个很好的博客,解释了如何做到
我认为问题是,你应该继续告诉用户,在你的ajax回调中电子邮件发送成功->如果(!err)那么你的请求成功->输出你的消息已经成功发送。
每个消息都是"一次"显示的,这是因为它们被放入堆栈并被"ammedialy"调用——您的ajax调用与此异步,并且在实际发送邮件时会触发回调。
相关文章:
- 未执行Ajax循环的Javascript之后的代码
- 有没有一种方法可以在所有嵌套循环之后放置一个标签,以便在一步中将它们全部打断
- 在for循环之后返回一个值
- JS在某个json节点之后循环
- 如何在表中指定的行数之后循环
- 用于在数组比较之后由于某种原因而爆发循环
- 在递归循环javascript之后,为JSON键变量使用自定义HTML元素
- 如何在包含异步函数的循环之后完成一件事
- 在循环 JavaScript 之后刷新页面
- For 循环成功地将元素添加到数组中,但在之后返回空数组
- Javascript函数直到循环之后才执行
- 在javascript中的简单数学中,在循环中将数字X次相加会产生与事先乘以X并在之后相加不同的结果
- 在具有 FS 操作的 FOR 循环之后执行
- 例外:缺少 ) 在 for 循环控制之后
- Node.js for 循环,带有回调,之后同步执行
- 清除间隔名称未在 JS while 循环之后定义
- 在while循环之后提示用户,并根据用户的回答使变量等于一个值(javascript)
- 如何在 {{#each}} 循环中的元素之间添加分隔符,最后一个元素之后除外
- 如何在.fetchAll Bookshelf js+knex js之后循环遍历行
- jQuery在.promise()之后循环一个函数