#javascript #jquery #ruby-on-rails #ajax
#javascript #jquery #ruby-on-rails #ajax
Вопрос:
Я не новичок в программировании, но немного подзабыл Javascript / веб-разработку. Я создаю приложение с Rails, и у нас есть несколько трудоемких операций, во время которых мы хотим предоставить пользователю обратную связь. В принципе, я хочу сделать что-то подобное с помощью AJAX:
- [Пользователь нажимает «ок» или «Продолжить»]
- [Необязательное окно подтверждения]
- Показывать сообщение о состоянии «Работает …» во время выполнения операции
- Когда операция завершается и данные возвращаются с сервера, сообщение о состоянии изменяется на «Выполнено!» и результаты отображаются или происходит какой-либо обратный вызов.
Прошло некоторое время с тех пор, как я занимался веб-разработкой, и простой пример того, как достичь чего-то подобного, был бы очень полезен. Спасибо.
Ответ №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. Скорее всего, встроенный. В каких случаях есть веская причина не использовать встроенный? В любом случае, эта ссылка очень помогла. Спасибо!