web-dev-qa-db-ja.com

Ajaxを介してパラメーターをビューに渡す

たとえば分類用語ページなどのビュー生成ページを表示しているときに、新しい分類用語などのいくつかのパラメーターを渡してビュー生成コンテンツを更新する方法はありますか。

これの目的は、ajaxリクエストを介してページコンテンツを更新することです。

ありがとう

4
silkAdmin

カスタムモジュールでは、引数を使用してビューを簡単に実行およびレンダリングできます。

私は...するだろう:

1-AJAXサーバーへの呼び出しをトリガーするようにいくつかのJSコードを設定します

2-hook_menu()を使用して、特定のURLにカスタムメニューコールバックを定義します。つまり、_/views/ajax/view_name/view_display/view_arguments_

3-コールバック関数を作成します()

4-ビューを引数付きでロードしてレンダリングします(これはFrom Views 2 APIです):

_$view = views_get_view('foobar');  // get the view named `foobar`
$view->set_display('page_1');  // Set the view display you want to use
$view->set_arguments(array($foo));  // Pass an array containing one or several variables you want to use as arguments in the view
$result = $view->render(); // Returns HTML 
_

5-結果をJSONで返します(ビュー自体よりも多くの情報を渡したい場合は実用的です)。 D7ではdrupal_json_output()を使用できます。

4

これは、ajaxを使用してビューブロックをロードし、ページで作成したリンクのリストのhref値からコンテキストフィルターを渡すために使用したJavaScriptです。これが誰かを助けることを願っています!

function getInfo(args) {

  $.ajax({
    url: Drupal.settings.basePath + 'views/ajax',
    type: 'post',
    data: {
      view_name: 'agent_lookup',
      view_display_id: 'agent_lookup_block', //your display id
      view_args: args,
    },
    dataType: 'json',
    success: function (response) {
        if (response[1] !== undefined) {
        var viewHtml = response[1].data;
        $('#ajax-target').html(viewHtml);
        //Drupal.attachBehaviors(); //check if you need this.
      }

    },
        error: function(data) {
         alert('An error occured!');
        }
  });
}



$('.ajax_button').once().click(function(e){
    e.preventDefault();
    var the_id = $(this).attr('href');
    noSlashes = the_id.replace(/\//g,'');
    getInfo(noSlashes);

});
0
echo