web-dev-qa-db-ja.com

Drupal.ajax()を使用して<a>クリックで#content divを更新する方法

#contentをAJAXで更新しようとしています。 Drupal.ajax関数を見つけて、このコードで使用しようとしました。Viewsモジュールからコピーされましたが、変更されました。

var base_element_settings = {
  'event': 'click',
  'progress': { 'type': 'throbber' }
};
jQuery('a').once('custom-ajax-processed').each(function () {
    var element_settings = base_element_settings;

    if (jQuery(this).attr('href')) {
      element_settings.url = jQuery(this).attr('href');
    }
    var base = "content";// $(this).attr('id');
    Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
});

しかし、#contentを置き換えるのではなく、タイトルで応答の内容を警告しますAn AJAX HTTPエラーが発生しました。HTTP結果コード:2何が問題ですか?Drupal.ajax()で実現することは可能ですか?

3
int_ua

drupal.ajaxを使用してそれを実現できることを知らないが、drupal 6のモジュールをjquery loadとDrupal.attachBehaviorsを使用して作成し、任意のページを任意のdivにロードできるようになりました。7にも移植されました。 :)これは モジュール です(現在レビュープロセス中)。

1
Serjas

私はこのプレゼンテーションが答えを与えるかもしれないと信じています http://www.slideshare.net/merlinofchaos/drupal-7-advanced-ajax

1
Dmitry Vyal

あなたはおそらく次のようなことをすることができます:

$(document).ready(function(){
  $('a#load-content').click(function (e) {
    $('#content').load('/menu/callback/ajax/loader');
    e.preventDefault();
  });
});

次に、<a href="/nojs/path" id="load-content">Load</a>のようなリンクをクリックすると、div#contentからのメニューコールバックのHTML結果が取得され、/menu/callback/ajax/loaderに入力されます。

0
David Thomas