AJAX e predição de acções
-
10-07-2019 - |
Pergunta
Eu gostaria de pedir a sua opinião sobre este assunto. Esta é uma questão teórica.
Eu estou em uma situação onde eu tenho uma interface mostrada para um usuário que usa AJAX para conversar com o servidor. A linguagem do lado do servidor não importa aqui. Eu tenho um formulário com campos e cada um deles são deletable. Se o usuário selecionar algumas -checkboxes "Excluir" e prensas Update, então eu tenho essas duas opções para fazer:
Opção 1: Quando a supressão dos campos, use JavaScript para remover o HTML imediatamente e executar AJAX no fundo para excluir esses campos. Isto consegue um olhar de uma interface rápida -> melhor experiência de usuário. No entanto, se a chamada AJAX falhar no lado do servidor (os campos não pode ser excluído), então os campos HTML excluídos anteriormente daria uma suposição falsa para o usuário (um deles sendo excluído).
Opção 2: Quando a supressão dos campos, executar AJAX, dependendo o seu sucesso, remova o HTML ou não. Isto dá feedback preciso para o usuário, mas a forma iria congelar até que a chamada AJAX acabamentos = lento (er).
Quais são seus pensamentos? Que abordagem parece melhor para mim tomar ou devo fazê-lo uma opção?
Solução
Opção 3: Mark os controles como sendo excluído (por exemplo, sobreposição de uma caixa cinza translúcido com um ícone de exclusão nele). Enviar o pedido. Quando ele retorna, remova os controles, ou mudar a caixa para mostrar um ícone de erro durante alguns segundos (em seguida, remover a caixa).
Permita que o resto da interface a ser interagiu com enquanto isso continua.
Outras dicas
questão Nice.
Uma terceira opção seria:
- desativar imediatamente os controles
- excluir -los quando os retornos do Ajax
Este dá informações ao utilizador que algo estava efetivamente solicitado (resposta), enquanto mostra também o momento em que é efetivamente concluído.
Além disso, o usuário de alguma forma se sente a "chamada distante", que não induzi-lo em erro, porque é foi realmente acontece. De qualquer forma, não há nada significativo que podemos fazer para esconder esse sentimento, porque o atraso será sempre lá.