it-swarm-es.com

¿Cuál es el método / implementación más rápido para una devolución de llamada Ajax?

Tengo un mapa que carga marcadores a través de ajax en varios/numerosos eventos de mapas. Actualmente, defino una devolución de llamada de página personalizada para mi elemento hook_menu() que imprime mi json/js.

Como mi devolución de llamada de página no devuelve ningún contenido y solo imprime contenido, Drupal no representa la plantilla completa, el menú, etc., y por lo tanto me permite devolver una página con ¡solo mi JavaScript.

Aunque esto funciona, creo que Drupal todavía sigue siendo un arranque completo, lo que significa que está agregando una gran cantidad de gastos generales que me gustaría eliminar.

He estado mirando controlador de devolución de llamada de JavaScript de alto rendimiento , que se enorgullece de ser un "controlador de devolución de llamada de JavaScript de alto rendimiento" y que, en resumen, parece que ofrece un js.php halagar index.php para dirigir sus solicitudes y personalizar/limitar/optimizar el arranque Drupal lo hace por defecto.

Desafortunadamente el proyecto js todavía no tiene una versión D7 ( solicite una aquí ), lo que nos lleva al principio ... =

¿Cuál es la forma más rápida de implementar una devolución de llamada Ajax en Drupal?

17
electblake

Defino una devolución de llamada de página personalizada para mi elemento hook_menu() que imprime mi json/js.

Eso es lo que Drupal 6 ofrece. El Drupal 7 AJAX framework puede hacer un poco más que eso. Sí, inicia Drupal, pero también ofrece muchas funciones de forma gratuita. En resumen, puede usar ajax_deliver () como método de entrega de página y enviar comandos al navegador.

... Ajax puede habilitarse agregando clases a botones y enlaces. Al agregar la clase 'use-ajax' a un enlace, el enlace se cargará a través de una llamada Ajax. Cuando se utiliza este método, la href del enlace puede contener '/ nojs /' como parte de la ruta. Cuando el marco Ajax realiza la solicitud, la convertirá a '/ ajax /'. El servidor puede determinar fácilmente si esta solicitud se realizó a través de una solicitud real de Ajax o en un estado degradado, y responder adecuadamente.

Sin embargo, si desea eludir el marco por razones de rendimiento, entonces no hay nada que le impida llamar a los archivos php en su módulo directamente desde javascript. No obtendrá Drupal bondad pero también tendrá control total sobre la página.

8
Jeremy French

Un poco tarde, pero especialmente si está utilizando esa devolución de llamada ajax para sondeo (verifique si hay nuevos mensajes, por ejemplo), hay una alternativa interesante: integración Drupal node.js .

En lugar de sondear, le permite construir un sistema similar a un evento, donde los usuarios (también conocidos como JS en su página) mantienen una conexión abierta a su servidor node.js. Si sucede algo, puede notificar directamente a todos los usuarios a través de node.js.

4
Berdir

Dado que desea implementar una devolución de llamada Ajax en Drupal , usar el módulo JS parece una buena apuesta. Acabo de echar un vistazo rápido al código, y es básicamente lo que hubiera sugerido (pero con mucha más atención a los detalles). El mantenedor es uno de los principales desarrolladores Drupal, también.

Parece que tendrá que usar module_load_include() o quizás un manual más include 'sites/all/modules/contrib/...'; enfoque si necesita utilizar API de otros módulos.

El problema del que estás hablando ha sido un tema candente últimamente. La nota clave de Dries de DrupalCon Chicago habló sobre cómo Drupal 8 necesita mejores API para hacer devoluciones de llamada y formatos de salida que no sean HTML.

3
Adam DiCarlo