Ergebnis 1 bis 4 von 4

Thema: Wie funktioniert Ajax in Contao

  1. #1
    Contao-Nutzer
    Registriert seit
    22.09.2014.
    Ort
    Chemnitz
    Beiträge
    34

    Standard Wie funktioniert Ajax in Contao

    Hallo,

    ich würde für eine Erweiterung gerne Daten per Ajax nachladen.
    Und ich würde das gerne mit Contao Bordmitteln machen (wenn es welche gibt), um auf eine Erweiterung dafür verzichten zukönnen.
    Meine Fragen dazu:

    1. gibt es welche (Bordmittel)
    2. Wenn ja ... wie benutzt man die(ein kleines Code snippet wäre gut)
    3. Wenn nicht ... geht es trozdem irgendwie anders als mit einer eigenen ajax.php im Root?

  2. #2
    Contao-Nutzer
    Registriert seit
    22.09.2014.
    Ort
    Chemnitz
    Beiträge
    34

    Standard

    So, nach einem Tag Arbeit (suchen und rumprobieren)

    habe ich die antwort gefunden und zwar in einem Github issuse.

    1. in dem FE Template der eigenen Erweiterung folgendes machen:
    Code:
    <script type="text/javascript">
        var data = {};
        data["REQUEST_TOKEN"] = "<?php echo REQUEST_TOKEN ?>";
    
        $(document).ready(function(){
    
            $("#trigger").click(function(event){
    
              $.post(
                    '<?php echo \Contao\Environment::get('requestUri')?>',
                    data,
                    function(responseText) {
                        alert(responseText);
    
                    }
                ).fail(function( jqXhr, textStatus, errorThrown ){ console.log( errorThrown )});
                event.preventDefault();
            });
        });
    
    
    </script>
    Wichtig dabei:
    - data["REQUEST_TOKEN"] -> fügt das request-token ein, das muss mit rein, sonst der POST request nicht beim eigenen Modul an.
    - bei der Zeile mit dem \Environment::get('requestUri') ... der Ajax Request wird auf die Seite "zurück umgeleitet" wo das FE Modul ist, damit man den
    Request in der generate Methode des Moduls wieder abfangen kann was so ausieht:

    Code:
    public function generate()
        {   
            if ($_SERVER['REQUEST_METHOD']=="POST" && \Environment::get('isAjaxRequest')) {
               $this->myGenerateAjax();
               exit;
            }
           return parent::generate();
        }
    
        //do in frontend
        protected function compile()
        {
         ...
        }
        public function myGenerateAjax()
        {      
            // Ajax Requests verarbeiten
            if(\Environment::get('isAjaxRequest')) {
                header('Content-Type: application/json; charset=UTF-8');
                echo json_encode(array(1, 2, 3));
                exit;
            }
        }
    Und ich weiß das ich hier das was bei dem Link oben stand nur noch mal wiedergegeben habe.
    Aber so was gehört meiner Meinung hier ins Forum und nicht nur auf GitHub.
    (da gibt es mal wieder einen Minuspunkt für die Contao Dokumentation !!)
    Ich hoffe das hilft vielleicht noch Anderen.

    Wenn ihr übrigens nicht POST benutzten wollt sondern GET dann sucht mal nach der jquery $.get() funktion und dann ist der Request Token auch egal glaub ich.

  3. #3
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Also wenn schon, dann gehört es ins Contao-Wiki .

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.126
    Partner-ID
    10107

    Standard

    Zitat Zitat von garyee Beitrag anzeigen
    Wenn ihr übrigens nicht POST benutzten wollt sondern GET dann sucht mal nach der jquery $.get() funktion und dann ist der Request Token auch egal glaub ich.
    Egal ob du GET oder POST brauchst, geht natürlich beides mit jQuery . Für POST gibt es (genau so wie für GET) eine shorthand function: http://api.jquery.com/jquery.post/
    Und ja, der Request Token wird bei GET requests wohl egal sein.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •