2009-06-28 10 views
8

Cuál es mejor en la solicitud de AJAX, Respuesta con HTML listo o respuesta con solo datos y escribir HTML usando JavaScript, y este JavaScript usará una plantilla de HTML predefinida para poner los datos que vienen dentro y mostrar en la página.Usando Ajax, ¿es mejor generar marcado adicional en el servidor o en el lado del cliente?

Al crear el código HTML en el servidor y enviarlo a la página, disminuirá el código JS del lado del cliente, pero aumentará el tamaño de la respuesta.

Enviar los datos al lado del cliente disminuirá el tamaño de la respuesta pero aumentará el código JS.

¿Cuál es mejor y más utilizado?

+0

Similar a http://stackoverflow.com/questions/415699 –

Respuesta

5

Creo que la solución correcta depende en gran medida del contexto. Puede haber una respuesta derecha para una situación dada, pero no hay una respuesta única para todos. En general, si estoy usando una vista parcial que se reemplaza a través de AJAX, devolveré html. Si realizo una acción en una pequeña parte de algo, usaré JSON. Probablemente sea más probable que use JSON ya que hay más situaciones en las que cabe, pero trato de elegir la mejor solución para el problema en cuestión. Aunque estoy usando ASP.NET MVC. Otros marcos, sin duda, tienen diferentes soluciones características.

1

Creo que el método más común es pasar la masa de marcado (HTML/CSS) a través de la navegación síncrona al sitio, y mantener la solicitud/respuesta AJAX lo más ajustada posible [cita requerida].

Es cierto que es bastante raro ver que el HTML sin formato vuelva como una respuesta AJAX. Por lo general, será una respuesta JSON, ya que es la más fácil de eval() con JS.

Ya que la mayoría de las clases de marcado y estilo se necesitan de todos modos, y también pueden ser utilizadas por contenido "estático", eso le deja la oportunidad de mantener el AJAX pequeño, ordenado y al grano.

+0

De hecho, probablemente no sea aconsejable pasar HTML al navegador utilizando AJAX. De hecho, técnicamente no es AJAX entonces (la X significa XML). Los formatos comunes utilizados son XML y JSON, este último en particular se utiliza porque es liviano. – Noldorin

4

He visto ambos usados. Además de las ventajas y desventajas que figuran en el PO, yo añadiría:

  • Es mejor enviar la información como datos, no html ya que vas a continuación, tiene más opciones en cómo va a utilizarlo.
  • ¿Cuál es su nivel de comodidad con JS?
  • Puede usar varias IU (en diferentes páginas) y puede volver a utilizar los datos en la página. Por ejemplo, muestre los datos en una forma corta y en una forma larga, pero use la misma fuente de datos. - Permitir que el cliente cambie entre los dos en una página sin requerir un viaje al servidor.
  • Una aplicación JS puro del sistema de plantillas líquido está disponible para plantillas del lado del cliente: http://www.mattmccray.com/archive/2008/12/11/Liquidjs_A_Non-Evaling_Templat

Larry

3

Voy a ser muy pragmático aquí:

Depende de la cantidad y la complejidad del nuevo marcado.

Si necesita devolver una pieza elaborada de HTML, siempre es mejor escribirla en el servidor y devolverla como datos, también es más fácil de mantener. La construcción de HTML complejo en el lado del cliente generalmente es críptica, incluso con el uso de bibliotecas js modernas. Por otro lado, si su marcado adicional es pequeño, puede crearlo con js. Nunca he hecho nada con ASP.NET AJAX, pero tener una página asp.net, una vista de rieles o una JSP con solo un pequeño fragmento como <p class='info'>Row Updated</p> es confuso.

Deje que el código le explique, Si está luchando contra el código de JavaScript para crear marcas en el lado del cliente, tal vez debería ir en el lado del servidor.

Por último: no se preocupe demasiado por el tamaño de HMTL vs JSON, y si lo hace, benchmark las solicitudes para ver si la diferencia no es insignificante.

+0

También encontré que stackOverflow envía el html, lo vi en la página de perfil de usuario. –

+0

De hecho. SO incluso devuelve javascript en las etiquetas

0

Normalmente, al actualizar partes pequeñas de la pantalla, puede enviar el JSON de vuelta al cliente y el cliente puede actualizarse fácilmente. Si está intentando construir una Cuadrícula complicada, es mejor usar un Panel de Actualización.

Cuestiones relacionadas