it-swarm.it

Qual è il metodo / implementazione più veloce per un callback Ajax?

Ho una mappa che carica i marcatori tramite Ajax su vari/numerosi eventi della mappa. Attualmente, definisco un callback di pagina personalizzato per il mio elemento hook_menu() che stampa il mio json/js.

Poiché il callback della mia pagina non restituisce alcun contenuto e stampa solo contenuto, Drupal non visualizza il modello completo, il menu, ecc. E quindi mi consente di restituire una pagina con solo il mio JavaScript.

Anche se funziona, credo che Drupal è ancora completamente bootstrap, il che significa che sta aggiungendo un sacco di overhead che vorrei eliminare.

Ho guardato gestore di callback JavaScript ad alte prestazioni , che si vanta come un "gestore di callback JavaScript ad alte prestazioni" e che, in breve, sembra che offra un js.php complimentarsi index.php per indirizzare le tue richieste e personalizzare/limitare/ottimizzare il bootstrap Drupal lo fa di default.

Purtroppo il progetto js non ha ancora una versione D7 ( petizione per uno qui ), che ci porta all'inizio ... =

Qual è il modo più veloce per implementare un callback Ajax in Drupal?

17
electblake

Definisco un callback di pagina personalizzato per il mio elemento hook_menu() che stampa il mio json/js.

Questo è ciò che Drupal 6 offerto. Il Drupal 7 AJAX framework può fare un po 'di più. Sì, avvia Bootup Drupal, ma offre anche molte funzionalità gratuite. In breve puoi usare ajax_deliver () come metodo di consegna della pagina e inviare comandi al browser.

... Ajax può essere abilitato aggiungendo classi a pulsanti e collegamenti. Aggiungendo la classe "use-ajax" a un collegamento, il collegamento verrà caricato tramite una chiamata Ajax. Quando si utilizza questo metodo, l'href del collegamento può contenere '/ nojs /' come parte del percorso. Quando il framework Ajax effettua la richiesta, la converte in '/ ajax /'. Il server è quindi in grado di dire facilmente se questa richiesta è stata fatta attraverso una richiesta Ajax effettiva o in uno stato degradato e rispondere in modo appropriato.

Tuttavia, se vuoi eludere il framework per motivi di prestazioni, non c'è nulla che ti impedisca di chiamare i file php nel tuo modulo direttamente da JavaScript. Non otterrai Drupal bontà ma avrai anche il controllo completo sulla pagina.

8
Jeremy French

Un po 'in ritardo, ma soprattutto se stai usando quel callback ajax per il polling (controlla per esempio nuovi messaggi), c'è un'alternativa interessante: integrazione Drupal node.js .

Invece di eseguire il polling, ti consente di creare un sistema simile a un evento, in cui gli utenti (noto anche come JS sulla loro pagina) mantengono una connessione aperta al tuo server node.js. Se succede qualcosa, puoi avvisare direttamente tutti gli utenti tramite node.js.

4
Berdir

Poiché vuoi implementare un callback Ajax in Drupal , usare il modulo JS sembra una buona scommessa. Ho appena dato una rapida occhiata al codice, ed è sostanzialmente quello che avrei suggerito (ma con molta più attenzione ai dettagli). Il manutentore è uno dei migliori Drupal.

Sembra che dovrai usare module_load_include() o forse un approccio più manuale include 'sites/all/modules/contrib/...'; Se devi usare API da altri moduli.

Lo stesso problema di cui stai parlando è stato un argomento caldo ultimamente. Keynote di Dries di DrupalCon Chicago parla di come Drupal 8 necessita di API migliori per eseguire callback e formati di output non HTML.

3
Adam DiCarlo