jQuery $.ajax и индикатор выполнения электронной почты PHP

Я разрабатываю собственную систему электронной почты для одного из моих клиентов в качестве дополнения к созданной мной CMS, которую я даю своим клиентам. Я использую jQuery Ajax для отправки всей информации в файл PHP, который форматирует электронную почту, отправляет запрос в MySQL, чтобы получить все адреса электронной почты из базы данных, и отправляет электронные письма с помощью функции mail(). Это занимает некоторое время, и я хочу, чтобы jQuery ajax отображал индикатор выполнения каждый раз, когда PHP-скрипт отправляет электронное письмо. Я искал что-то похожее на успех: функция (), которая получает данные из сценария PHP через JSON, позволяя jquery обновлять ход отправки по электронной почте.

У кого-нибудь есть предложение по этому поводу? Что-то вроде этого предпочтительнее:

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

});

person Benjamin Endicott    schedule 01.11.2013    source источник


Ответы (2)


Вы можете использовать объект 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;
    }
})
person Philipp    schedule 01.11.2013
comment
Чтобы это заработало, мне нужно было изменить строку xhr.addEventListener(progress....) на xhr.upload.addEventListener(progress,....) - в противном случае это было полезным предложением. - person charlesdeb; 30.09.2014

Вам нужно будет обернуть это внутри функции setInterval(). Вы можете выполнить поиск по запросу Опрос AJAX. Но идея здесь в том, что вы не можете периодически отправлять информацию из одного и того же PHP-скрипта во время его работы, обратный вызов success запускается только ОДИН РАЗ после завершения скрипта.

person A.O.    schedule 01.11.2013