Как загрузить и отобразить представление с помощью Ajax в Drupal 7?


Это первый раз, когда я когда-либо пытался загрузить представление с помощью Ajax в Drupal7, и я был бы признателен, если бы вы помогли мне с нуля. Я потратил часы, чтобы научиться этому, но все равно потерпел неудачу!

Я создал представление под названием image_gallery, оно состоит из трех блоков, называемых hd,tablet и phone, и он отображает набор изображений.Я создал вкладку и хочу отображать и загружать эти блоки (обычно представления) с помощью Ajax. это мой HTML:

    <div>
        <div id="image_gallery_tab">
            <ul>
                <li id="igt1">HD</li>
                <li id="igt2">Tablet</li>
                <li id="igt3">Cellphone</li>
            </ul>
        </div>
        <div id="image_gallery_content">
            <div class="igc" id="igc1">
                <?php print views_embed_view("image_gallery","hd") ?>
            </div>
            <div class="igc" id="igc2">
            </div>
            <div class="igc" id="igc3">
            </div>
        </div>
    </div>

Я установил Use Ajax на "да" в просмотр пользовательского интерфейса. это мой код jQuery:

$("#image_gallery_tab ul li").click(function(){
        var id = $(this).attr("id").slice(-1);
        $(".igc").css("display","none");
        if(id==2)
            {
            $.ajax({
                url: Drupal.settings.basePath + 'views/ajax',
                type: 'POST',
                dataType: 'json',
                data: 'view_name=image_gallery&view_display_id=tablet', // Pass a key/value pair.
                success: function(response) {
                  $("#igc2").innerHTML=response.display;
                },
                error: function(data) {
                 alert('An error occured!');
                }
              });
            }
    });

Но он ничего не отображает. что здесь не так и что мне делать? спасибо

 4
Author: M a m a D, 2014-03-15

1 answers

Для всех, кто оказывается здесь в поисках ответа, вот как вы это делаете. Сначала вам нужно включить "Использовать AJAX" в других настройках в представлении и принять к сведению "Имя машины", так как это ваш идентификатор дисплея:

Views Other Settings

Тогда вот как вы используете JS с помощью jQuery ajax:

$.ajax({
  url: Drupal.settings.basePath + '/views/ajax',
  type: 'post',
  data: {
    view_name: 'your_view_name',
    view_display_id: 'page', //your display id
    view_args: VIEW_ARGUMENT_HERE, // your views argument(s)
  },
  dataType: 'json',
  success: function (response) {
    if (response[1] !== undefined) {
      console.log(response[1].data); // do something with the view
    }
  }
});
 11
Author: Vanja Jelic, 2019-02-05 14:05:15