il modo migliore per archiviare dati da una chiamata Ajax

2

Sto scrivendo un'applicazione web in cui sto recuperando i dati dal server attraverso AJAX richieste e il contenuto HTML generato dinamicamente. Ho alcuni dati da caricare, generare HTML da esso e append nella mia pagina web. Ora stavo pensando a due soluzioni:

1) Effettua chiamate AJAX, genera HTML dalla risposta, imposta display: none su di esso quando è necessario e quando ne avrò bisogno in seguito, imposta display: block; invece e hide() altro contenuto non necessario display (sempre generato dinamicamente).

2) Salva la risposta AJAX in variables , rimuovi HTML generato prima, ri-generate da variable quando ne avrò bisogno in seguito.

Non so se l'ho spiegato bene, ma mi piacerebbe sapere quale è la migliore pratica in termini di prestazioni client / server.

    
posta steo 26.08.2013 - 21:46
fonte

1 risposta

3

Il primo approccio che suggerisci, rendere l'HTML in un div nascosto è ragionevole, in particolare se le informazioni restituite dal servizio sono improbabili che cambino una volta che è stato reso e non è necessario manipolare ulteriormente la variabile. Ciò evita il rendering del contenuto più di una volta. Dalla tua descrizione, sembra che questa sia la necessità di base che devi compilare. Nota, se usi display: nessuno, nessun calcolo di dimensione o posizione che fai all'interno dell'area renderizzata non funzionerà correttamente. Quindi, se stai dimensionando o posizionando dinamicamente alcuni elementi, potrebbero non essere visualizzati correttamente. Per HTML semplice, questo probabilmente non sarà un problema.

Se hai bisogno di manipolare il risultato dopo che è stato ricevuto, o stai facendo la richiesta più volte e hai bisogno di eseguire nuovamente il rendering del codice HTML ogni volta perché la risposta potrebbe essere cambiata, un approccio migliore sarebbe quello di analizzare la risposta in un oggetto e renderlo nell'HTML usando una funzione che prende l'oggetto come input, o meglio ancora, usando un sistema di template come quello incluso in Underscore.js libreria per rendere l'HTML.

    
risposta data 27.08.2013 - 01:40
fonte