2013-11-01 1 views
0

Я разрабатываю настраиваемую систему электронной почты для одного из моих клиентов как добавление для созданной мной CMS, которую я предоставляю своим клиентам. Я использую jQuery Ajax для отправки всей информации в файл PHP, который форматирует электронную почту, отправляет запрос в MySQL для получения всего адреса электронной почты из базы данных и отправляет электронные письма с помощью mail(). Это занимает некоторое время, и я хочу, чтобы jQuery ajax отображал индикатор выполнения, каждый раз, когда PHP-скрипт отправляет электронное письмо. Я искал что-то похожее на успех: function(), который получает данные из скрипта 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); 
     } 
    }); 

}); 

ответ

2

Вы можете использовать объект XHR и прикрепить прослушиватель событий к прогрессу события

$.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; 
    } 
}) 
+0

Для того, чтобы получить эту работу мне нужно изменить xhr.addEventListener («прогресс» ....) line to xhr.upload.addEventListener («прогресс», ....) - в противном случае это было полезным предложением. – charlesdeb

0

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