【问题标题】:jQuery $.ajax & PHP Email Progress IndicatorjQuery $.ajax 和 PHP 电子邮件进度指示器
【发布时间】:2023-03-10 21:10:02
【问题描述】:

我正在为我的一个客户开发一个自定义电子邮件系统,作为我为我的客户构建的 CMS 的附加组件。我正在使用 jQuery Ajax 将所有信息发送到格式化电子邮件的 PHP 文件,向 MySQL 发送查询以从数据库中获取所有电子邮件地址,然后使用 mail() 发送电子邮件。这需要一些时间,我希望 jQuery ajax 在每次 PHP 脚本发送电子邮件时显示一个进度条。我已经搜索了类似于成功的东西:function(),它通过 JSON 从 PHP 脚本接收数据,允许 jquery 更新电子邮件的进度。

有人对此有什么建议吗?最好是这样的:

 $.ajax({
      type: "POST",
      url: "example.com",
      data: {"test":"test","tester":"tester"},
      PROGRESS: function(data){
        $("div").html(data);
      },
      success: function(r){
        alert(r);
      }
    });

});

【问题讨论】:

    标签: php jquery ajax progress indicator


    【解决方案1】:

    您可以使用 xhr 对象并将事件侦听器附加到 progress 事件

    $.ajax({
        //...
        xhr: function() {
            var xhr = new window.XMLHttpRequest();
            xhr.addEventListener("progress", function(e) {
                var p = e.loaded / e.total;
                // update your progress bar here..
            });
            return xhr;
        }
    })
    

    【讨论】:

    • 为了让这个工作我需要将 xhr.addEventListener("progress".... ) 行更改为 xhr.upload.addEventListener("progress",....) - 否则,这是一个有用的建议。
    【解决方案2】:

    您需要将其包装在 setInterval() 函数中。您可以搜索AJAX Polling。但这里的想法是,您不能在运行时从同一个 PHP 脚本定期发回信息,success 回调仅在脚本完成后触发一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-08
      • 2019-01-09
      • 1970-01-01
      • 2017-07-21
      • 2013-12-21
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多