Richiesta dati DB asincrona

di il
3 risposte

Richiesta dati DB asincrona

Buongiorno a tutti,

ho un questione da sottoporvi in quanto mi capita in parecchie webapp e non so quale è il medodo migliore.

Prendiamo una tabella con l'elenco di prenotazioni assistenza, i campi principali sono id_richiesta, id_operatore, id_tipologia_richieta

Ora se devo modificare la richiesta solitamente utilizzo un dialog JQuery e quindi creo una specie di pop up in cui ripropongo tutti i dati salvati della richiesta e do la possibilità di modificarli.

Per caricare i dati utilizzo una richiesta $.ajax post asincrona in modo da avere i dati prima di caricare tutti gli elementi html del dialog.
Fino a qui non credo ci siano metodi migliori, ma in caso fatemi sapere.

Il problema però si pone quando devo caricare oltre che ai dati della prenotazione anche l'elenco delle opzioni.
Mi spiego meglio: l'id_operatore non è visibile all'utente ma è la chiave della tabella Operatori in cui ci sono Nome e Cognome.
Quindi io nel dialog avrò un select con all'interno tutti gli operatori disponibili e al caricamento andrò a pre-selezionare l'operatore già scelto nella prenotazione.

Questo implica un ulteriore richiesta $.ajax post asincrona per caricare l'elenco degli operatori nel select
Stessa cosa avviene per la tipologia in quanto l'id_tipologia è chiave e l'utente vede la descrizione.

In questi casi come ci si comporta?

E' possibile fare più richieste asincrone oppure conviene fare un'unica richiesta e gestire le info necessario a livello php sul server?
Con gestione info sul server intendo di fare un'unica richiesta $.ajax post asincrona, per poi restituire un json contenente a blocchi le info del tipo ( visualizzo come fosse un array)

dati[0] -> array contenente elenco operatori
dati[1] -> array contenente elenco tipologie
dati[2] -> array contente dati prenotazione

Spero di essere stato chiaro nell'esposizione, in caso scrivetemelo che cerco di chiarire.

Grazie molte!

3 Risposte

  • Re: Richiesta dati DB asincrona

    Ciao,
    dunque diciamo la soluzione unica è molto buona perchè ti permette di avere un'unica chiamata e meno traffico ma i dati da scambiare in rete sono di più, certo anche con tre chiamate comunque i dati, sommati, sono quelli e oltretutto hai tre chiamate da fare, inoltre devi controllare che le select html siano "piene" prima di selezionare operatore e tipologia della richiesta, o rischi di non trovare l'id, quindi un piccolo problema di sincronizzazione ma penso non critico. però con tre "punti" di chiamata, richiesta, operatori e tipologie il sistema è assai flessibile, non è "chiuso" ad una chiamata che ti restituisce tutto per cui è aperto ad esempio per l'utilizzo in caso di altre procedure che richiedano tipologie e operatori, non saprei è un pò da valutare.

    Davide
  • Re: Richiesta dati DB asincrona

    Eranius ha scritto:


    Il problema però si pone quando devo caricare oltre che ai dati della prenotazione anche l'elenco delle opzioni.

    Questo implica un ulteriore richiesta $.ajax post asincrona per caricare l'elenco degli operatori nel select
    Stessa cosa avviene per la tipologia in quanto l'id_tipologia è chiave e l'utente vede la descrizione.

    In questi casi come ci si comporta?
    Innanzitutto: cosa c'entra con Java dato che hai postato in questa sezione? Direi nulla ..

    Comunque sì, ho capito cosa intendi. È molto tipico che il front-end debba ricevere anche "altri" dati (oltre alla/e informazioni principali), ad esempio per popolare delle combo-box, liste o per avere delle lookup-table per decodificare codici in descrizioni da mostrare.

    Le soluzioni sono due: o si impacchetta tutto quanto in una unica response ... o si fanno request separate per ottenere le singole cose. Ci sono vantaggi/svantaggi per ciascuno dei modi.

    Con una unica response, fai ovviamente meno request ma comporta che il server deve comporre un JSON (o altro) con più dati. Se il back-end fosse in Java, si dovrebbero fare bean specifici per ciascuna response (che comunque è già generalmente così).
    Se fai request separate, puoi avere endpoint specifici per ciascuna lista di informazioni, quindi molto più "verticalizzato". In questo caso il front-end potrebbe anche applicare meccanismi di caching.

    Mi è capitato di lavorare su una applicazione (io ero sul back-end, non sul front-end) in cui il front-end faceva tante richieste singole per ottenere ciascuna delle lookup-table da usare per combobox o altro. Però applicava dei meccanismi di caching e si "teneva" queste informazioni per un certo tot di tempo. Se anche cambiavi pagina e poi ritornavi sulla precedente, non ri-faceva subito le request per le lut. In questi scenari è solo questione di quanto si vuole rendere "furbo" il front-end.
  • Re: Richiesta dati DB asincrona

    andbin ha scritto:


    Innanzitutto: cosa c'entra con Java dato che hai postato in questa sezione? Direi nulla ..
    scusa forse sono ho chiarito bene, comunque sono richieste javascript.

    Ad ogno modo ho capito che non c'è un metodo corretto, ma secondo le necessità di possono utilizzare entrambi.
    Mi bastava sapere proprio questo, per evitare di utilizzare un metodo obsoleto o errato.

    Sulla questione di tenere in memoria alcune request, in parte già lo faccio o meglio lo anticipo.
    Se prevedo che in una pagina vengono aperti più dialog con consegunza richieste di dati allora eseguo in automatico una request a questo punto asincrona e mi salvo i dati in una variabile javascript cosi da utilizzare quella all'occorrenza.
Devi accedere o registrarti per scrivere nel forum
3 risposte