Devo includere il markup HTML nella mia risposta JSON?

13

In un sito di e-commerce, quando aggiungo un articolo a un carrello, vorrei mostrare una finestra popup con le opzioni che puoi scegliere. Immagina di ordinare un iPod Shuffle e ora devi scegliere il colore e il testo da incidere.

Vorrei che la finestra fosse modale, quindi sto utilizzando una lightbox popolata da una chiamata Ajax. Ora ho due opzioni:

Opzione 1: invia solo i dati e genera il markup HTML utilizzando JavaScript

La cosa bella di questo è che riduce la richiesta Ajax al minimo dell'orso e non mescola i dati con il markup.

Ciò che non è eccezionale è che ora ho bisogno di usare JavaScript per eseguire il rendering, invece di avere un motore di template sul lato server farlo. Potrei essere in grado di ripulire un po 'l'approccio utilizzando una soluzione per i modelli sul lato client .

Opzione 2: invia il codice HTML

La cosa buona è che posso avere lo stesso motore di template sul lato server che sto usando per il resto delle mie attività di rendering (Django), eseguire il rendering del lightbox. JavaScript è usato solo per inserire il frammento HTML nella pagina. Quindi lascia chiaramente il rendering al motore di rendering. Ha senso per me.

Ma non mi sento a mio agio nel mixare dati e markup in una chiamata Ajax per qualche motivo. Non sono sicuro di cosa mi faccia sentire a disagio. Voglio dire, è lo stesso modo in cui viene pubblicata ogni pagina web: data plus markup - giusto?

    
posta Mike M. Lin 24.07.2011 - 21:58
fonte

4 risposte

9

JSON dovrebbe contenere solo i dati e nessun markup. A lungo termine questo approccio è più estensibile perché esiste il potenziale per l'utilizzo dei dati JSON in altre parti del tuo sito. Se includi il markup, utilizzare gli stessi dati per popolare un altro modello diventa molto più difficile.

    
risposta data 25.07.2011 - 04:06
fonte
3

Vorrei inviare i dati nella richiesta e creare il markup in js. Un ulteriore vantaggio sarebbe che ci sarebbe un minore utilizzo della larghezza di banda. È una specie di preferenza personale, ma tenere il margine laterale del client lontano dal lato server è probabilmente un'idea migliore. Ho anche un sito Web Django e uso solo il sistema di template per inserire alcune json varibles nella pagina (una in meno ajax req. Make) e usando i file src quando si sviluppa sulla mia macchina. Tutto il lato client è fatto con ExtJS.

    
risposta data 25.07.2011 - 01:13
fonte
1

Penso che tu abbia parlato dei pro e dei contro di entrambi. Perché non guardare una terza opzione di avere il javascript per il tuo lightbox essere generato da una vista di Django. Quindi il tuo JSON contiene solo i dati per aggiornarlo per ogni vista?

Quello che dovresti essere in grado di fare è racchiudere tutto il codice dei template in variabili javascript e poi inviarli con javascript dopo aver ricevuto la richiesta JSON sul lato client.

    
risposta data 25.07.2011 - 01:50
fonte
0

Dovresti utilizzare il motore di template per il markup e mantenere un campo nascosto da qualche parte per memorizzare i valori, che puoi quindi trovare nel documento usando un selettore.

    
risposta data 12.09.2012 - 23:39
fonte

Leggi altre domande sui tag