AJAX и прогнозирование действий - PullRequest
2 голосов
/ 29 октября 2009

Я хотел бы спросить ваше мнение по этому поводу. Это теоретический вопрос.

Я нахожусь в ситуации, когда пользователю отображается интерфейс, использующий AJAX для связи с сервером. Серверный язык здесь не имеет значения. У меня есть форма с полями, и каждое из них можно удалить. Если пользователь выбирает несколько флажков «удалить» и нажимает кнопку «Обновить», у меня есть два варианта:

Вариант 1: При удалении полей используйте JavaScript, чтобы немедленно удалить HTML, и запустите AJAX в фоновом режиме, чтобы удалить эти поля. Это обеспечивает быстрый интерфейс -> лучший пользовательский опыт. Однако в случае сбоя вызова AJAX на стороне сервера (поля не могут быть удалены), ранее удаленные поля HTML могут дать ложное предположение для пользователя (из них удаляются).

Вариант 2: При удалении полей запустите AJAX, в зависимости от его успешности, либо удалите HTML, либо нет. Это дает точную обратную связь для пользователя, но форма будет зависать до тех пор, пока не завершится вызов AJAX = медленно (er).

Что ты думаешь? Какой подход мне кажется более подходящим, или я должен выбрать его?

Ответы [ 2 ]

4 голосов
/ 29 октября 2009

Вариант 3: пометьте элементы управления как удаленные (например, наложите полупрозрачный серый прямоугольник на значок удаления). Отправьте запрос. Когда он вернется, удалите элементы управления или измените флажок, чтобы в течение нескольких секунд отображался значок ошибки (затем снимите флажок).

Разрешить взаимодействие с остальным интерфейсом во время этого процесса.

1 голос
/ 29 октября 2009

Хороший вопрос.

Третий вариант:

  1. немедленно отключить элементы управления
  2. удалить их, когда Ajax вернет

Это дает пользователю обратную связь, что что-то было эффективно запрошено (отзывчивость), показывая также момент, когда он фактически завершен.


Также пользователь как-то ощущает «дальний вызов», который не вызывает у него ошибки, потому что это действительно было. В любом случае, мы ничего не можем сделать, чтобы скрыть это чувство, потому что задержка всегда будет.

...