0

我有一个发送 X 邮件的 PHP 进程 每次发送邮件后,我在数据库中添加一行以告知已发送邮件。

所以,我不想创建一个进度条来告诉用户 X 邮件是在 Y 上发送的( Y = 总数)

我有两个这样的 jquery 函数:

function mail_send()
{
    $('.loading').css('display','block');
    $.ajax({
        'url': '/an/url/', 
        'data': {
                    someParam: param
                },
        'beforeSend':function()
                    {
                        $('#loadingBg').append('<span id="count"></span>');
                        setTimeout(function () {
                            mail_updateProgress(id);
                        }, 500);
                    }

        , 
        'success':  function (data,textStatus)
                    {
                       (....)
                    }
    });
}

function mail_updateProgress(id) {
    $.ajax({
        'url': '/an/url/', 
            'data': {
                        someParam: param
                    },
        'success':  function (data) {
                        var res = $.parseJSON(data);
                        $('#count').html(res.nbSended + '/' + res.total);
                    }
    });
}

问题是我现在不能发送超过 15 封邮件,而且我不会创建 XXX 邮件地址来测试它,但是 updateProgress() 函数只成功了一次,它发生在 mail_send() 的同一时间功能。

有错误吗?

谢谢

编辑:好的,所以 setInterval 很好,但我还有第二个问题,$.ajax 有队列吗?我正在登录 3 件事:第一:当进程进入 updateProgress 函数时第二:当 updateProgress ajax 成功时第三:当 mail_send() ajax 成功时

日志的顺序是

第一次(X 次) 第三次(1 次) 第二次(X 次)

所以,我的进度条永远不会进步,只是在发送功能结束时使 0% => 100%

在发送功能时处理进度功能的任何想法?可以委托吗?

4

1 回答 1

2

您正在使用setTimeout如果您想进行间隔检查,请使用:setInterval

于 2012-05-11T08:51:38.517 回答