さまざまな/多数のマップイベントでajaxを介してマーカーをロードするマップがあります。現在、json/jsを出力するhook_menu()
アイテムのカスタムページコールバックを定義しています。
私のページコールバックはコンテンツを返さないので、だけが印刷するコンテンツなので、 Drupalは完全なテンプレートやメニューなどをレンダリングしないため、only JavaScriptでページを返すことができます。
これは機能しますが、Drupalはまだ完全にブートストラップしていると考えています。これは、ドロップしたいオーバーヘッドが大幅に増えることを意味します。
私は 高性能JavaScriptコールバックハンドラー を見てきました。これは、「高性能JavaScriptコールバックハンドラー」としての地位を誇り、要するにjs.php
お世辞にindex.php
リクエストを送信し、ブートストラップをカスタマイズ/制限/最適化するにはDrupalがデフォルトで行います。
残念なことに js プロジェクトにはまだD7リリースがありません( ここでの請願 )。これは私たちを最初に導きます...
DrupalでAjaxコールバックを実装する最も速い方法は何ですか?
私のjson/jsを出力する
hook_menu()
アイテムのカスタムページコールバックを定義します。
Drupal 6が提供するものです。 Drupal 7 AJAX framework はそれよりも少し多くのことができます。はい、Drupalをブートストラップします。簡単に言えば ajax_deliver() をページ配信メソッドとして使用し、コマンドをブラウザーに送信できます。
...ボタンとリンクにクラスを追加することにより、Ajaxを有効にすることができます。 「use-ajax」クラスをリンクに追加すると、リンクはAjax呼び出しを介してロードされます。この方法を使用する場合、リンクのhrefにはパスの一部として「/ nojs /」を含めることができます。 Ajaxフレームワークがリクエストを行うと、これは '/ ajax /'に変換されます。その後、サーバーは、この要求が実際のAjax要求を介して行われたのか、劣化状態で行われたのかを簡単に判断し、適切に応答できます。
ただし、パフォーマンス上の理由でフレームワークを回避したい場合は、JavaScriptから直接モジュールのphpファイルを呼び出すのを止めることはできません。 Drupal良さはありませんが、ページを完全に制御できます。
少し遅れますが、特にポーリングにajaxコールバックを使用している場合(たとえば、新しいメッセージを確認するなど)、興味深い代替手段があります: Drupal node.js統合 。
ポーリングの代わりに、ユーザー(ページのJSとも呼ばれます)がnode.jsサーバーへのオープンな接続を維持する、イベントのようなシステムを構築できます。何かが発生した場合は、node.jsを介してすべてのユーザーに直接通知できます。
Ajaxコールバックin Drupalを実装したいので、JSモジュールを使用するのは良い策のようです。私はコードをざっと見てみましたが、それは基本的に私が提案したものです(ただし、詳細に多くの注意を払っています)。メンテナはトップのDrupal開発者でもあります。
他のモジュールのAPIを使用する必要がある場合は、module_load_include()
またはおそらくより手動のinclude 'sites/all/modules/contrib/...';
アプローチを使用する必要があるようです。
あなたが話しているまさにその問題は、最近話題になっています。 DrupalCon ChicagoからのDriesの基調講演 は、Drupal 8がコールバックと非HTML出力フォーマットを実行するためにより良いAPIを必要とする方法について話しました。