2010-07-28 13 views
22

¿Cuál es la forma preferida de hacer AJAX?¿Ajax JSON o HTML?

si era para una página de búsqueda escrito en PHP usando jQuery para el AJAX

¿Cómo manejaría la respuesta

a) tener la respuesta contendrá todos los html/estilo relevante

o

b) Enviar JSON puro y tener una función javascript, construir el html/styling alrededor de las variables de javascript.

Veo ventajas para ambos. 'a' es obviamente más fácil, mientras que 'b' es más eficiente (aunque gzip probablemente haría la diferencia insignificante).

+2

No estoy seguro de que 'a' sea más fácil, al menos en ninguna situación. Solo necesitas una buena libración Object-to-Json para hacer 'b' fácil. –

+1

El estilo debe ser hecho por CSS de todos modos. – MvanGeest

+0

@Mavan yeh, me refiero a clases/id's para el CSS – Pablo

Respuesta

4

Yo diría que 'a' es la opción con la que más desea pegarse.

Es mucho más fácil mantener las plantillas consistentes del lado del servidor (puede reutilizarlas en escenarios que no sean AJAX).

de plantillas del lado del cliente no es super elegante (si vas a hacerlo, te sugiero esto: http://ejohn.org/blog/javascript-micro-templating/)

En cuanto al estilo me gustaría incluir una hoja de estilo miniaturizada cuando se carga la página no se carga cuando el contenido.

2

La pregunta importante que debe hacerse aquí es cuál es su objetivo. ¿Se

  • quiere tener más tráfico a través de la utilización de alambre y menos CPU del cliente
  • quiere tener más uso de la CPU del cliente y menos tráfico sobre el alambre

y en ese contexto otra pregunta es , ¿Cuántas personas llaman a tu sitio? Si tiene cientos de miles de páginas visitadas por día, debería considerar reducir el tráfico de cables, por ejemplo.

En la mayoría de los casos, no solo desea generar marcas HTML, sino que también desea enviar algunos datos ordinarios al cliente que puede manejar en su ECMA-/Javascript. Por lo tanto, JSON debe ser su primera opción (si no tiene que lidiar con bloques de datos gigantes). JSON es un peso ligero y se puede analizar extremly rápido con javascript.

Por lo tanto, repito, si generar un marcado renderizado completo en su servidor y entregarlo a un cliente o dejar que el cliente haga el trabajo depende de lo que está planeando hacer.

Una página estática es lo que adivina correctamente, estática. Pero significa que no hay uso de CPU para un cliente/navegador. Entonces, si no necesita/quiere tener un comportamiento de página "dinámico", está bien con una página estática.

2

Me gustaría ir con Json por defecto. Es un formato ligero de intercambio de datos (fácil de implementar). Solo necesitas una buena libración Object-to-Json para hacer 'b' fácil.

3

Personalmente, casi siempre devuelvo fragmentos de HTML de llamadas ajax, , a menos que tenga que hacer algo con los datos devueltos mediante programación. Por ejemplo:

  • Funcionalidad de autocompletar. Devuelve una matriz JSON de datos, usa javascript para crear los elementos apropiados.
  • Cualquier cosa que realmente no solicite datos, sino que realmente los publique. La edición en línea viene a la mente. Normalmente devuelvo un mensaje de estado en formato JSON.

Habiendo dicho eso, obviamente creo que ambas opciones son válidas. Estoy seguro de que los puristas estarán en desacuerdo, pero a veces devolver el simple HTML es lo suficientemente bueno.

5

Me gustaría ir con el html:

  • haciendo la conversión de JSON a html hará que el cliente más lenta (y usted no sabe nada sobre el rendimiento de cliente del usuario)
  • hacerlo en JSON significa que usted tiene que convertir en dos ocasiones (de estructura de datos del servidor para JSON, a continuación, a partir de JSON a html)
  • es probable que la prestación a que ya html en el servidor, por lo que tiene la infraestructura
  • red diferencia del tráfico será negligente
  • puede usar las bibliotecas que hacen todo el trabajo por usted (p. con JQuery, una llamada ajax que devuelve html se convierte en jQuery ('# div'). load (url)).
0

El enfoque JSON es atractivo debido a la separación lógica de los datos y la presentación. Si en algún momento en el futuro el diseño (presentación) debe cambiar, lo que inevitablemente sucederá, entonces los datos JSON no necesitarían cambiar, ¿no?

+0

Bueno, si eres cambios en el estilo, o tiene que actualizar su HTML (si devuelve HTML) o actualizar su plantilla JS y/o JS (si devuelve JSON). En mi opinión, el primero será un cambio un poco más fácil. –