0

私は X メールを送信する PHP プロセスを持っています。各メールの送信後、メールが送信されたことを伝えるためにデータベースに行を追加します。

したがって、X メールが Y ( Y = 合計) に送信されたことをユーザーに伝えるためのプログレス バーを作成したくありません。

私はそのような2つの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() 関数は 1 回だけ成功し、mail_send() と同時に発生します。関数。

エラーはありますか?

ありがとう

編集:わかりました、setIntervalは良いですが、2番目の問題があります.$.ajaxのキューはありますか? 私は 3 つのことをログに記録しています: 最初: プロセスが updateProgress 関数で入力されたとき 2 番目: updateProgress ajax が成功したとき 3 番目: mail_send() ajax が成功したとき

ログの順番は

1回目(X回) 3回目(1回) 2回目(X回)

だから、私のプログレスバーは決して進まず、送信機能が終了したときに0%=> 100%にするだけです

送信機能中に進行機能を処理するアイデアはありますか? 委任することは可能ですか?

4

1 に答える 1

2

setTimeoutを使用しています。間隔を空けたチェックが必要な場合は、setIntervalを使用します。

于 2012-05-11T08:51:38.517 に答える