javascript - 在 ajax 回调函数的每个循环之后附加输出

标签 javascript php ajax asynchronous

我们花了两个多小时试图找到一种最佳方式来显示 ajax 回调函数渲染的结果,让我解释一下我到底想要做什么以更好地理解...

我有一个“发送”按钮,在单击事件时我定义了一个函数,将 $category_id 发送到另一个页面,然后我从数据库中获取所有收件人并为每个收件人发送一封电子邮件。现在整个过程工作正常,但是在每个循环之后:

(foreach ($recipients as $recipient))
{send_mail();
echo "email sent successfully to ....";} 

我正在返回一条 echo 语句,告知电子邮件已正确发送给该收件人。 Javascript 函数被定义为将这些回显结果附加到 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 事件。仅当后端完成处理时才会发生这种情况。

您需要检查的是 XHR readyState 属性。在处理请求期间设置为“3”。然后,您可以将 PHP 脚本的更新发送到网页。

Here is a good blog that explains how to do it

关于javascript - 在 ajax 回调函数的每个循环之后附加输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26862362/

相关文章:

javascript - 获取 Angular JS 中单选按钮中选中的单选按钮的值,作为 ng-repeat

PHP MySQLi 在插入时将文件重命名为行 ID

PHP:循环数组/字符串生成器或其他内容的最快方法

javascript - 如何从 asar 存档提供静态文件

javascript - Moment.js 无法正确解析 JavaScript 日期

javascript - 在 Google Chrome 扩展中添加 "options"菜单

javascript - PHP 脚本作为表单操作 : give server side effents

javascript - 使用 PHP、JQuery、Ajax 将电子邮件添加到 MySQL 数据库

javascript - 当在另一个 php 文件中插入某些数据时,使用 ajax 在 php 页面的 div 中加载内容

php - Laravel Report Analytics - 缓慢的 foreach 查询循环