Ankündigung

Einklappen
Keine Ankündigung bisher.

Einfache Galerie: auf AJAX Anfragen reagieren

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Einfache Galerie: auf AJAX Anfragen reagieren

    Hallo Leute,

    ich schreibe mir zum Lernen ein kleines Galeriescript, stecke jetzt aber bei der Bearbeitung von AJAX Anfragen fest.
    Das Problem besteht darin, dass - logischerweise - jeweils die komplette Seite (inkl. HTML Grundgerüst) nochmal in die bereits bestehende Seite geladen wird.

    Meine Frage ist: macht es überhaupt Sinn auf der Basis eine Lösung zu suchen, oder steckt der Fehler bereits im Aufbau meiner kompletten "Architektur"?


    Mein Code (gekürzt):
    index.php
    PHP-Code:
    <?php require_once 'bootstrap.php'?>
    <!doctype html>
    <html lang="de">
    <head>
        <script>
            $(document).ready(function() {
                $('#galleries a').click(function(e){
                    var url = $(this).attr('href');
                    $('#gallery').load(url);
                    e.preventDefault();
                });
            });
        </script>
    </head>
    <body>
    <div id="wrapper">
        <?php $Gallery->listGalleries(); ?>
        <hr />
        <?php $Gallery->showImages($galleryName); ?>
    </div>
    </body>
    </html>
    bootstrap.php
    PHP-Code:
    if (!empty($_GET[gallery])) {
        
    $galleryName $_GET[gallery];
    }

    require_once 
    '/Gallery.php';
    $Gallery = new Gallery($galleryRoot); 

    Gallery.php
    PHP-Code:
    class Gallery
    {
        protected 
    $galleryRoot;
        protected 
    $filesArray = array();
        protected 
    $dh;


        public function  
    __construct($galleryRoot)
        {
            
    $this->galleryRoot $galleryRoot;
        }


        public function 
    showImages($galleryName)
        {
            
    $galleryFolder $this->galleryRoot $galleryName;
            
    $this->imagesArray $this->readDir($galleryFolder);
            include 
    'templates/showImages.php';
        }


        protected function 
    readDir($dir)
        {
            unset(
    $this->filesArray);
            if (
    is_dir($dir)) {
                
    $this->dh opendir($dir);
                 while ((
    $file readdir($this->dh)) !== false) {
                    if ((
    $file != ".") && ($file != "..")) {
                        
    $this->filesArray[] = $file;
                    }
                }
                return 
    $this->filesArray;
            }
        }


        public function 
    __destruct()
        {
            
    closedir($this->dh);
        }


    templates/showImages.php
    PHP-Code:
    <div id="gallery">
        <h1>Gallery: </h1>
        <ul>
            <?php foreach ($this->imagesArray as $file): ?>
                <li><a href="<?php echo $galleryFolder "/" $file?>">
                    <img src="<?php echo $galleryFolder "/" $file?>" height="100" width="100" />
                </a></li>
            <?php endforeach; ?>
        </ul>
    </div>

    Vielen Dank für das Lesen
    Grüsse JohnT


  • #2
    übergeb beispielsweise noch einen Parameter, der dir sagt, ob die Seite mit Ajax geladen wurde und wenn dies der Fall ist, kannst du in deiner Template-Datei mit einigen If-Konstrukten alles ausschließen, was nicht geladen werden soll.
    "My software never has bugs, it just develops random features."
    "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

    Kommentar


    • #3
      Danke, das wäre eine Möglichkeit.
      Eine andere die mir noch einfällt wäre, in der bootstrap.php bei einem AJAX-Request die passende Methode der Klasse Gallery direkt aufzurufen, und dann das Skript abzubrechen.

      Aber irgendwie kommen mir beide Lösungen nicht wirklich sauber vor. Gibt's da nichts schönes?

      Kommentar


      • #4
        Gehört finde ich aber nicht in die Bootstrap. Aber sicherlich denkbar!
        "My software never has bugs, it just develops random features."
        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

        Kommentar

        Lädt...
        X