Che cos'è una richiesta AJAX nascosta?
Ho notato un aumento nell'utilizzo di richieste AJAX nascoste progettate per far apparire immediatamente l'azione dell'utente. Mi riferirò a questo tipo di richiesta AJAX come non-bloccante. È una richiesta AJAX fatta senza che l'utente si accorga che sta accadendo, viene eseguita in background e la sua operazione è silenziosa ( non c'è alcun verboso che indichi il completamento con successo della chiamata AJAX ). L'obiettivo è far apparire l'operazione che è avvenuta immediatamente quando non è ancora finita.
Ecco alcuni esempi di richiesta AJAX non bloccante;
- L'utente fa clic su Elimina su una raccolta di email. Gli elementi scompaiono immediatamente dalla posta in arrivo e possono continuare con altre operazioni. Nel frattempo, una richiesta AJAX sta elaborando la cancellazione degli articoli in background.
- L'utente compila un modulo per i nuovi record. Clic Salva. Il nuovo oggetto appare immediatamente nella lista. L'utente può continuare ad aggiungere nuovi record.
Per chiarire, ecco alcuni esempi di blocco della richiesta AJAX;
- L'utente fa clic su Elimina su una raccolta di email. Appare un cursore a forma di clessidra. Viene effettuata la richiesta AJAX e, quando risponde, il cursore a forma di clessidra viene disattivato. L'utente deve attendere un secondo per il completamento dell'operazione.
- L'utente compila un modulo per i nuovi record. Clic Salva. Il modulo diventa grigio con un caricatore AJAX che si anima. Viene visualizzato un messaggio "I tuoi dati sono stati salvati" e il nuovo record appare nell'elenco.
La differenza tra i due scenari precedenti è che un'impostazione AJAX non bloccante non fornisce il feedback di un rendimento operativo e un blocco di installazione AJAX.
Rischio di richieste AJAX nascoste
Il più grande rischio di questo stile di richiesta AJAX è che l'applicazione web potrebbe trovarsi in uno stato completamente diverso quando la richiesta AJAX fallisce.
Ad esempio, un esempio non bloccante;
- L'utente seleziona un gruppo di email. Fai clic sul pulsante Elimina. L'operazione sembra avvenire immediatamente (gli elementi scompaiono dalla lista). L'utente fa quindi clic sul pulsante di composizione e inizia a digitare una nuova email. È in questo momento che il codice JavaScript scopre che la richiesta AJAX non è riuscita. Lo script potrebbe mostrare un messaggio di errore, ma al momento è davvero inutile.
In alternativa, un esempio di blocco;
- L'utente seleziona un gruppo di email. Fai clic sul pulsante Elimina. Vede una clessidra, ma l'operazione fallisce. Ricevono un messaggio di errore che dice "errore blah blah blah". Vengono restituiti all'elenco delle e-mail e hanno ancora le e-mail che volevano eliminare selezionate. Potrebbero tentare di eliminarli di nuovo.
Esistono anche altri rischi tecnici per l'esecuzione di richieste AJAX non bloccanti. L'utente potrebbe chiudere il browser, navigare in un altro sito Web e navigare in un'altra posizione nel Web corrente, rendendo inutile il contesto di qualsiasi risposta di errore.
Allora, perché è diventato così popolare?
Facebook, Google, Microsoft, ecc. ecc. Tutti questi domini di grandi dimensioni utilizzano sempre più richieste AJAX non bloccanti per rendere le operazioni visualizzate che vengono eseguite immediatamente. Ho anche visto un aumento degli editor di moduli che hanno nessun pulsante di salvataggio o invio . Non appena esci da un campo o premi Invio. Il valore è stato salvato. Non c'è il messaggio il tuo profilo è stato aggiornato o il salvataggio del passo.
Le richieste AJAX non sono una certezza e non dovrebbero essere considerate come riuscite fino a quando non sono state completate, ma molte delle principali applicazioni web funzionano proprio così.
Questi siti web utilizzano chiamate AJAX non bloccanti per simulare applicazioni reattive che assumono un rischio non necessario a costo di apparire veloci?
Si tratta di un modello di progettazione che dovremmo seguire tutti per rimanere competitivi?