web-dev-qa-db-fra.com

Comment charger et afficher une vue avec Ajax dans Drupal 7?

C'est la première fois que j'essaie de charger une vue à l'aide d'Ajax dans Drupal7 et je vous serais reconnaissant de m'aider à partir de zéro. J'ai passé des heures à apprendre comment faire mais j'ai quand même échoué!

J'ai créé une vue appelée image_gallery, il a trois blocs appelés hd, tablet et phone et il affiche un ensemble d'images. J'ai créé un onglet et je veux afficher et charger ces blocs (généralement vues) avec Ajax. ce mon 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>

J'ai réglé le Use Ajax à "oui" dans l'interface utilisateur des vues. c'est mon code 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!');
                }
              });
            }
    });

mais il n'affiche rien. qu'est-ce qui ne va pas ici et que dois-je faire? Merci

4
M a m a D

Pour quiconque se retrouve ici à la recherche d'une réponse, voici comment vous le faites. Vous devez d'abord activer "Utiliser AJAX" sous Autres paramètres dans la vue et prendre note du "Nom de la machine" car c'est votre ID d'affichage:

Views Other Settings

Ensuite, voici comment vous le tirez avec JS en utilisant 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
Vanja Jelic