Самый простой способ предоставить уведомление «Выполняется» … «Готово»?

#javascript #jquery #ruby-on-rails #ajax

#javascript #jquery #ruby-on-rails #ajax

Вопрос:

Я не новичок в программировании, но немного подзабыл Javascript / веб-разработку. Я создаю приложение с Rails, и у нас есть несколько трудоемких операций, во время которых мы хотим предоставить пользователю обратную связь. В принципе, я хочу сделать что-то подобное с помощью AJAX:

  1. [Пользователь нажимает «ок» или «Продолжить»]
  2. [Необязательное окно подтверждения]
  3. Показывать сообщение о состоянии «Работает …» во время выполнения операции
  4. Когда операция завершается и данные возвращаются с сервера, сообщение о состоянии изменяется на «Выполнено!» и результаты отображаются или происходит какой-либо обратный вызов.

Прошло некоторое время с тех пор, как я занимался веб-разработкой, и простой пример того, как достичь чего-то подобного, был бы очень полезен. Спасибо.

Ответ №1:

 $(window).ajaxStart(function() {
    $("#loader").show();
}).ajaxStop(function() {
    $("#loader").hide();
});
  

Просто глобально привязать для запуска и остановки. В этом примере отображается и скрывается div загрузчика. Как правило, у вас есть div со счетчиком в нем, сообщающим пользователю, что он загружается.

Исчезновения счетчика должно быть достаточно, сообщение «готово» излишне.

Комментарии:

1. 1 — @Raynos — Где вы берете «счетчик»? Это GIF, плагин jquery …?

Ответ №2:

 $.ajax({
   type: "POST",
   url: "some.php",
   data: "name=Johnamp;location=Boston",
   beforeSend(jqXHR, settings) {
      $(body).append('<div id="overlayStatus">Working...</div>');
   },
   complete(jqXHR, textStatus) {
      $('#overlayStatus').html("Ajax call completed: "   textStatus);
      setTimeout(function(){
         $('#overlayStatus').hide();
      }, 1000);
   }
});
  

Комментарии:

1. Почему setTimeout тогда .delay

2. @Raynos Я не совсем уверен, но я думаю, .delay() используется только для анимации 🙂

3. .hide это анимация css, она просто очень простая.

Ответ №3:

Вы создаете свой собственный фреймворк AJAX или используете встроенный в rails? Если оно более позднее, изучите варианты для linkt_to (в частности, :update one) http://edgeguides.rubyonrails.org/ajax_on_rails.html

Комментарии:

1. Скорее всего, встроенный. В каких случаях есть веская причина не использовать встроенный? В любом случае, эта ссылка очень помогла. Спасибо!