ciao,
se il metodo .upload fosse sincrono si creerebbe un problema per l'utente perché vedrebbe la pagina web "congelata" per l'intera durata dell'operazione.
E' un bene che il metodo sia asincrono, così tu nel frattempo puoi mostrare all'utente un testo che lo invita ad attendere, magari accompagnato da una gif animata di caricamento tipo
queste.
Dovresti seguire questi passi:
- Tra le prime istruzioni della funzione CheckDati, mettine una che ti disabiliti il bottone o che lo faccia sparire (in modo che l'utente non possa premerlo ripetutamente). Poi fai comparire un messaggio di caricamento che lo invita ad attendere. Se invece vuoi che, nel frangente, non possa cliccare proprio nient'altro, allora puoi usare il plugin BlockUI, suggerito da totti240282 in un altro thread.
- Alla fine della funzione CheckDati, metti un return false; in modo che il postback venga cancellato (<- non vedo come viene invocata CheckDati quindi non posso garantirti che restituire false ti annullerà il postback);
- Leggi la risposta che ti arriva dalla richiesta ajax e sblocca (o fai riapparire) il bottone. Se la validazione ha avuto buon esito, scatena il submit del form. Attenzione che a questo secondo submit, se CheckDate va di nuovo in esecuzione, deve rendersi conto che la validazione è già stata fatta e che quindi può restituire true
ciao