it-swarm-id.com

Apa metode / implementasi tercepat untuk panggilan balik Ajax?

Saya memiliki peta yang memuat penanda melalui ajax pada berbagai/banyak acara peta. Saat ini, saya mendefinisikan panggilan balik halaman khusus untuk item hook_menu() saya yang mencetak json/js saya.

Karena panggilan balik halaman saya tidak mengembalikan konten apa pun dan hanya mencetak konten , Drupal tidak merender template lengkap, menu, dll, dan dengan demikian memungkinkan saya untuk mengembalikan halaman dengan only JavaScript saya.

Meskipun ini berhasil, saya percaya bahwa Drupal masih sepenuhnya bootstrap, yang berarti menambahkan banyak overhead yang ingin saya buang.

Saya telah melihat penangan panggilan balik JavaScript kinerja tinggi , yang menawarkan dirinya sebagai "penangan panggilan balik JavaScript kinerja tinggi" dan yang, singkatnya, seolah-olah menawarkan js.php untuk memuji index.php untuk mengarahkan permintaan Anda ke dan menyesuaikan/membatasi/mengoptimalkan bootstrap Drupal tidak secara default.

Sayangnya proyek js belum memiliki rilis D7 ( petisi untuk satu di sini ), yang mengarahkan kita ke awal ... =

Apa cara tercepat untuk menerapkan panggilan balik Ajax di Drupal?

17
electblake

Saya mendefinisikan panggilan balik halaman khusus untuk item hook_menu() saya yang mencetak json/js saya.

Itulah yang Drupal 6 ditawarkan. The Drupal 7 AJAX framework dapat melakukan sedikit lebih dari itu. Ya itu bootstraps Drupal, tetapi juga memberikan banyak fitur secara gratis. Singkatnya Anda dapat menggunakan ajax_deliver () sebagai metode pengiriman halaman, dan mengirim perintah ke browser.

... Ajax dapat diaktifkan dengan menambahkan kelas ke tombol dan tautan. Dengan menambahkan kelas 'use-ajax' ke tautan, tautan akan dimuat melalui panggilan Ajax. Saat menggunakan metode ini, href tautan dapat berisi '/ nojs /' sebagai bagian dari jalur. Ketika kerangka kerja Ajax membuat permintaan, itu akan mengubahnya menjadi '/ ajax /'. Server kemudian dapat dengan mudah mengetahui apakah permintaan ini dibuat melalui permintaan Ajax yang sebenarnya atau dalam kondisi terdegradasi, dan merespons dengan tepat.

Namun jika Anda ingin menghindari kerangka karena alasan kinerja maka tidak ada yang menghentikan Anda memanggil file php dalam modul Anda langsung dari javascript. Anda tidak akan mendapatkan Drupal kebaikan tetapi Anda juga akan memiliki kontrol penuh atas halaman.

8
Jeremy French

Agak terlambat, tetapi terutama jika Anda menggunakan panggilan balik ajax untuk pemungutan suara (periksa misalnya pesan baru), ada alternatif yang menarik: Integrasi Drupal node.js .

Alih-alih polling, ini memungkinkan Anda untuk membangun sistem seperti acara, di mana pengguna (alias JS pada halaman mereka) menjaga koneksi terbuka ke server node.js Anda. Jika terjadi sesuatu, Anda dapat langsung memberi tahu semua pengguna melalui node.js.

4
Berdir

Karena Anda ingin menerapkan panggilan balik Ajax di Drupal , menggunakan modul JS sepertinya taruhan yang bagus. Saya hanya melihat sekilas kode itu, dan pada dasarnya itulah yang saya sarankan (tetapi dengan lebih banyak perhatian pada detail). Pemelihara adalah salah satu pengembang teratas Drupal juga.

Sepertinya Anda harus menggunakan module_load_include() atau mungkin lebih manual include 'sites/all/modules/contrib/...'; pendekatan jika Anda perlu menggunakan API dari modul lain.

Masalah yang sedang Anda bicarakan telah menjadi topik hangat belakangan ini. keynote Dries dari DrupalCon Chicago berbicara tentang bagaimana Drupal 8 membutuhkan API yang lebih baik untuk melakukan callback dan format output non-HTML.

3
Adam DiCarlo