risposta

2

La maggior parte degli script di gestione del lato client si abbandonano e al giorno d'oggi fanno solo lato server. È possibile utilizzare ajax quando si invia il post, in modo che la risposta sia leggermente più leggera rispetto al ricaricamento dell'intera pagina.

2

La convalida lato server è richiesta semplicemente perché la convalida lato client può essere disabilitata.

validazione lato client non è richiesto, ma rende l'applicazione più reattiva durante la gestione degli errori, come non avete più bisogno di fare un modulo di inviare al server e attendere che la pagina risultante di tornare.

Un'applicazione ben progettata utilizza entrambi.

Come nota a margine, Ajax può essere utilizzato per determinati tipi di convalida, come il controllo di nomi utente duplicati su un modulo di registrazione utente. Tuttavia, la convalida di base, come controllare se un campo contiene solo numeri, dovrebbe essere fatta senza di essa.

+0

Questo in realtà non rispondere alla domanda. È solo una definizione di entrambi, mentre chiede come evitare la duplicazione della logica per entrambi. –

0

Nella maggior parte dei casi è consigliabile eseguire la convalida sul lato server. Hai molte opzioni diverse per renderlo più facile come Ajax o usare moduli appiccicosi in PHP. Personalmente tendo a convalidare sul lato server perché l'utente ha la possibilità di disattivare JavaScript e non può disattivare la convalida sul server .....

5

Ci sono framework che possono generare il lato client validazione dalla configurazione di validazione serveride.

Ora non so che lingua o quadri che si sta utilizzando, ma forse questo articolo può essere di aiuto: http://www.emadibrahim.com/2008/09/08/client-server-side-validation-in-aspnet-mvc/

Sta usando Castello Validator Component con JQuery e aggiunge un po 'di colla per generare la validazione lato client basato sugli attributi di convalida del server. È per asp.net mvc.

/Asger

+0

Sto cercando qualcosa che non sia MS, e l'esempio non sembra davvero che semplificherebbe le cose nel complesso. – josh

+0

Bene, il principio dovrebbe poter essere trasferito anche su altre piattaforme ... quale lingua/quadro/piattaforma preferisci? – asgerhallas

2

Come altri hanno detto, si dovrebbe tenere la duplicazione, come la validazione lato client è quello di aiutare l'applicazione reagire presto per aiutare l'utente, ma, la vera convalida è sul lato server, come non dovresti mai fidarti di qualcosa che è passato fino a quando non è stato convalidato. Probabilmente eseguirai una validazione più ampia sul lato server, specialmente se è necessario verificare contro un'origine dati, ad esempio, il nome utente unico sarebbe sul lato server, ma il nome utente è abbastanza lungo, oppure indirizzo di posta elettronica, potrebbe essere fatto sul lato client e sul lato server.

Tendo a mettere commenti quando c'è una duplicazione, specialmente se sto usando un'espressione regolare, per accertarmi che ciò che cambia in uno sia cambiato in un altro.

I buoni test di unità aiuteranno a garantire che questi due rimangano sempre sincronizzati.

+0

Come si scrive un test unitario che testerà sia il validatore lato server che il validatore lato client? Sembra che, nel caso normale, si finirebbe con un set duplicato di test unitari (uno per ogni lingua), e quei test unitari potrebbero andare fuori sincrono. –

+0

Avrete due test, ma il lato server eseguirà più controlli più probabilmente del lato client, poiché il client sta solo cercando di vedere se i dati sono approssimativamente corretti, ma la correzione assoluta è un lavoro per il server. –

0

Ciò che si può fare è avere la logica di convalida lato server gestita dai servizi Web che la convalida lato client può chiamare tramite AJAX e anche quando si invia nuovamente al server.

0

Questo non è per rispondere alla tua domanda, ma potresti voler modificare il titolo in modo da non confondere il lettore, a qualcosa di simile a "Come mantenere la convalida sul server e sul lato client sincronizzati?"

L'idea del titolo è a uno a) dare al lettore un'idea approssimativa di ciò che si sta chiedendo o b) rendere il lettore rendersi conto che lui/lei deve leggere il contenuto per capire la tua domanda.

2

penso il modo migliore è utilizzare un componente che offra entrambi: il loro codice è stato testato e non è necessario mantenerlo. Ho usato i controlli Peter Blum's in passato con grande successo. due basi di codice se si desidera offrire entrambe le versioni. C'è uno strumento chiamato Script# che può aiutare a compilare C# in Javascript (fa una traduzione, non una vera compilation), ma non sono sicuro di quanto sarebbe bello per questa situazione

Problemi correlati