Giorno, chiarisco giusto questo punto:
Se eseguo una query come potrebbe restituire un valore diverso?
Probabilmente non sono riuscito a spiegarmi.
Provo a farti un esempio:
Mettiamo il caso che nel tuo db ci siano i seguenti record:
- Pippo Franco
- Pippo Baudo
- Pippo Inzaghi
- Franco Franchi
- Franco Svizzero
Ora, accedo alla tua pagina e vedo tutti quei risultati finché il campo di ricerca resta vuoto.
Inizio quindi a scrivere nel campo e arrivo a scrivere "Pippo".
I risultati ora sono 3, giusto?
- Pippo Franco
- Pippo Baudo
- Pippo Inzaghi
Mettiamo il caso che adesso inserisco un altro valore nel campo ma supponiamo che io non vada a digitarlo direttamente, faccio invece un copia/incolla, per cui sostituisco per intero il valore "Pippo" col valore "Franco".
Cosa succede secondo te?
I risultati sono sempre 3, e dovrebbero essere i seguenti:
- Pippo Franco
- Franco Franchi
- Franco Svizzero
Ovviamente non corrispondono ai precedenti (o quantomeno non tutti) anche se il numero di risultati è rimasto uguale; per cui se in questa situazione tu vai a bloccare l'aggiornamento, continueresti a vedere i 3 risultati precedenti (che non corrispondono alla query di ricerca). Giusto?
Cosa significa questo, che in alcuni casi, come può essere questo semplice esempio, non puoi fare affidamento solo al fatto che il numero di risultati non è variato; certo, questo può essere usato come condizione iniziale ma, per avere una certezza che si tratti degli stessi identici risultati (così da evitare l'aggiornamento) dovrai confrontarli uno per uno.
Chiaramente in questo esempio ho considerato un copia/incolla di un'intera parola ma potrebbe benissimo capitare anche digitando una singola lettera e poi sostituendola con un'altra.
Infatti se inizio a digitare "p" salteranno sempre fuori i primi 3 risultati (già visti nell'esempio); se poi seleziono quella "p" e ci sovrascrivo una "f", cosa pensi che avvenga? La stessa situazione dell'esempio precedente.
In sostanza voglio dire che non è così improbabile che si possano verificare delle situazioni del genere, sarebbe quindi opportuno evitare la comparsa di risultati sfalsati; quindi lasciare semplicemente che si aggiornino, anche quando restano uguali, oppure elaborare un sistema di verifica più affidabile.
Però, a conti fatti, questo "problema" che lamenti è forse trascurabile confronto agli "errori" nel resto del sistema.
Ti dirò di più, probabilmente lo sfarfallio può essere risolto senza bloccare l'aggiornamento dei risultati ma rielaborando meglio lo script così da evitare, ad esempio, di nascondere quegli elementi prima della chiamata AJAX; infatti normalmente se vai a rimpiazzare degli elementi con degli altri praticamente uguali, non dovrebbe notarsi alcuna discontinuità nella visualizzazione.
Tuttalpiù potresti nasconderli con un delay in modo da mantenerli visibili per qualche attimo prima dell'eventuale scomparsa.
Sono giusto delle idee, poi vedi tu che fare.