¿Debo incluir el marcado HTML en mi respuesta JSON?

13

En un sitio de comercio electrónico, al agregar un artículo a un carrito, me gustaría mostrar una ventana emergente con las opciones que puede elegir. Imagina que estás pidiendo un iPod Shuffle y ahora tienes que elegir el color y el texto para grabar.

Me gustaría que la ventana fuera modal, así que estoy usando una lightbox poblada por Una llamada de Ajax. Ahora tengo dos opciones:

Opción 1: envíe solo los datos y genere el marcado HTML utilizando JavaScript

Lo bueno de esto es que reduce la solicitud de Ajax al mínimo y no mezcla los datos con el marcado.

Lo que no es tan bueno de esto es que ahora necesito usar JavaScript para hacer mi renderización, en lugar de tener un motor de plantillas en el lado del servidor. Podría ser capaz de limpiar un poco el enfoque utilizando una solución de plantilla del lado del cliente .

Opción 2: enviar el marcado HTML

Lo bueno de esto es que puedo tener el mismo motor de plantillas del lado del servidor que estoy usando para el resto de mis tareas de renderizado (Django), hacer el renderizado de la caja de luz. JavaScript solo se utiliza para insertar el fragmento HTML en la página. Así que deja claramente el renderizado al motor de renderizado. Tiene sentido para mí.

Por alguna razón, no me siento cómodo mezclando datos y marcas en una llamada Ajax. No estoy seguro de lo que me hace sentir incómodo al respecto. Quiero decir, es la misma forma en que se sirve a todas las páginas web: datos más marcado, ¿no?

    
pregunta Mike M. Lin 24.07.2011 - 21:58

4 respuestas

9

JSON solo debe contener los datos y no el marcado. A largo plazo, este enfoque es más extensible porque existe el potencial de usar los datos JSON en otras partes de su sitio. Si incluye un marcado, el uso de los mismos datos para rellenar otra plantilla se vuelve mucho más difícil.

    
respondido por el davidk01 25.07.2011 - 04:06
3

Enviaría los datos en la solicitud y crearía el marcado en js. Un beneficio adicional sería que habría menos uso de ancho de banda. Es una especie de preferencia personal, pero mantener la marca del lado del cliente lejos del lado del servidor es probablemente una mejor idea. También tengo un sitio web de Django y solo utilizo el sistema de plantillas para poner algunos json varibles en la página (uno menos ajax requerido para hacer) y usar archivos src cuando se desarrolla en mi máquina. Todo el lado del cliente se realiza con ExtJS.

    
respondido por el pllee 25.07.2011 - 01:13
1

Creo que has hablado de los pros y los contras de ambos. ¿Por qué no ver una tercera opción para que el javascript para tu caja de luz se genere desde una vista de django? ¿Entonces su JSON solo debe contener los datos para actualizarlos para cada vista?

Lo que deberías poder hacer es envolver todo el código de las plantillas en variables de javascript y luego generarlas con javascript después de recibir la solicitud JSON en el lado del cliente.

    
respondido por el Ryan Gibbons 25.07.2011 - 01:50
0

Debería usar el motor de plantillas para el marcado y mantener un campo oculto en algún lugar para almacenar valores, que luego puede encontrar en el documento con un selector.

    
respondido por el Alex 12.09.2012 - 23:39

Lea otras preguntas en las etiquetas