CodeIgniter и Progress bar - PullRequest
       22

CodeIgniter и Progress bar

2 голосов
/ 30 декабря 2011

У меня есть несколько методов в моих моделях, которые вызываются моим контроллером.На клиенте я хочу обновить индикатор выполнения во время работы методов модели.

Как мне связаться с контроллером, чтобы получить его прогресс?

Ответы [ 4 ]

4 голосов
/ 09 января 2014

Правда, вам нужен AJAX / длинный опрос, чтобы это работало. Вот XMLHttpRequest2. И для меня это подняло сеть на новый уровень. Пришло время использовать его. Я использовал это с jquery. Наверное, намного легче понять, что я сделал. Возможно, нужно немного подправить, чтобы все заработало. Вот и все ..

$.ajax({
type: 'POST/GET',
url: "link/to/controller/method",
data: {whatever = 'foo'},
beforeSend: function(XMLHttpRequest)
{
  //Upload progress
  XMLHttpRequest.upload.addEventListener("progress", function(evt){
    if (evt.lengthComputable) {  
     var percentComplete = evt.loaded / evt.total;
     $( ".jquery-uploadbar-selector" ).progressbar({ value: percentComplete }); //jquery progress bar for upload
    //incase you wanted an upload bar
   }
 }, false); 
 //Download progress
 XMLHttpRequest.addEventListener("progress", function(evt){
   if (evt.lengthComputable) {  
     var percentComplete = evt.loaded / evt.total;
     $( ".jquery-downloadbar-selector" ).progressbar({ value: percentComplete });
   //jquery progress bar for download or in other words The real answer for question
   }
 }, false); 
},
success: function(data){
  //Here goes the end of what you have done.. I would just type.. 
  console.log('Yay!! I guess, I ve answered my first bounty question and hoping to see it work well.');
 }
});

Надеюсь, это сработает .. дай мне знать, если я где-то ошибаюсь.

1 голос
/ 30 декабря 2011

Вы не можете сделать это, используя PHP, так как PHP на стороне сервера, и когда он завершит свою работу, результат будет отправлен в браузер.

Вы можете использовать Javascript для вызова AJAX (Google, этоэто способ сделать звонок на сервер без перезагрузки страницы), и каждый раз, когда метод модели завершен, вы можете добавить «загрузку» в ваш индикатор выполнения с помощью JS.но на самом деле в PHP нет способа узнать, сколько действия было выполнено

0 голосов
/ 10 января 2014
  1. имеет http-соединение, открытое с клиентом (пользователем), и когда вы запускаете задание, отправляете данные (isWaiting = 1) своему клиенту или выполняете ajax-опрос, как сказал Асик, и получаете статус isWaiting.
  2. onHTML-страница на стороне клиента, JavaScript для загрузки индикатора выполнения, когда isWaiting = 1
  3. HTML-страница с этим внутренним тегом тела
<div class="overlay" style="display:none;"></div>

и css

.overlay {ширина: 100%;высота: 100%;Z-индекс: 5000;слева: 0; / IE / вверху: 0;выравнивания текста: центр;Положение: фиксированный;фон: url ('https://memberschemes.rics.org/MembersPortal/images/ajax_loader-2.gif') без повтора с фиксированным центром в центре; цвет фона: #EFEFEF; непрозрачность: 0,7; / * фон: # F4F4F4; фон-повтор: без повтора; положение фона: центр;* /}

0 голосов
/ 07 января 2014

Есть способы сделать это с загрузкой файлов через Apache и NGINX, однако это не относится к вашей ситуации.

Один из способов сделать это - использовать длинный опрос AJAX для отслеживания специального контроллера или метода вашего контроллера для поиска обновлений и обновлений в интерфейсе при его изменении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...