2011-05-11 19 views
6

Tengo un poco de acertijo. Básicamente estoy desarrollando un plugin WYSIWYG Editor para jQuery específicamente para mi aplicación web. Una de las características será insertar una información sobre herramientas en la imagen en línea basada en las imágenes que un usuario ha subido. Por ejemplo:AJAX vs PHP Directamente en JS

Hello there my name is [i="profile_pic.png"]A. Username[/i] 

La parte que estoy teniendo un problema con está, en la definición de las imágenes que están disponibles para un usuario, si debo insertar el array de elementos en el Javascript, así:

var available_images = "<?=json_encode($User->Profile->images)?>"; 

o para obtener un Ajax GET que devuelve una matriz codificada de las fuentes de imagen? Creo que el php en línea tiene más sentido ya que elimina la necesidad de una llamada ajax innecesaria, pero no pensé que insertar php en línea en javascript es una forma terriblemente buena.

¿Alguna sugerencia?

+0

+1 para una buena pregunta. Si lo coloca en una clase que realiza la llamada AJAX, la llamada puede reutilizarse en otro lugar. Creé una capa de datos ('data.js') para un proyecto y la utilicé en mi aplicación. No estoy seguro de cómo está diseñada su aplicación web, sino solo algo en lo que pensar. – pixelbobby

Respuesta

4

No hay nada malo con la inserción de datos recopilados por PHP en JS, ¿de qué otro modo obtendría JS los datos? La única razón por la que debería considerar la llamada AJAX sería, si los usuarios pueden cargar imágenes nuevas mientras están editando. Esto significaría que la información debe actualizarse, lo que haría que la llamada AJAX sea más atractiva que la carga JSON estática en la página.

+0

Me acabo de dar cuenta de que podría necesitar que los usuarios agreguen imágenes para que la llamada AJAX sea la mejor idea en este caso. Gracias – Dormouse

4

A menos que la matriz cambie de algún modo a lo largo de la vida de la página, escupiré la matriz exactamente como sugiere en el fragmento de código. No hay ningún beneficio real para tener una llamada ajax adicional porque el tamaño de la matriz que supongo no será tan grande como para afectar el tiempo de carga de la página inicial.

Si mira alrededor de las páginas de desbordamiento de pila y hace vista-fuente, hacen este tipo de cosas todo el tiempo.

Si la cantidad de datos es enorme y tal vez agregue siete o más segundos al tiempo de carga de la página, consideraría una llamada ajax. Al menos, la página se representa y el usuario tiene algo que ver, mientras tanto, puede tener una imagen de throbber con un mensaje de estado que dice "cargar" o lo que sea.

También diría que veo muchos ajax innecesarios por el simple hecho de hacerlo. Es como una optimización prematura, personas que agregan complejidad para resolver un problema que no tienen. Comience de manera simple como lo hace, si tiene problemas de tiempo de respuesta más adelante con dicha página, luego considere qué beneficios traerá ajax a la mesa.

2

¿Siempre obtiene la matriz de imágenes, o solo algunas veces (por ejemplo, en respuesta a una acción del usuario)? Si el primero, yo diría que lo haga en línea. De lo contrario, hazlo como AJAX. es decir, solo hazlo por AJAX si reduce tu tráfico, etc. Pero si siempre debes hacerlo, no veo ninguna ventaja. No veo ningún problema con la mezcla de php y javascript en línea, aparte de lo que significa que tiene que hacer su javascript en línea también en lugar de en archivos .js externos que se pueden almacenar en caché (o al menos la parte donde se completa la matriz).