Contao-Camp 2024
Seite 2 von 2 ErsteErste 12
Ergebnis 41 bis 62 von 62

Thema: AJAX im Frontend?

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

    Standard

    Du kannst dich auch an die Basis Anleitung aus der Dokumentation halten: https://docs.contao.org/dev/getting-...g-development/

  2. #42
    Contao-Nutzer Avatar von mucona-media
    Registriert seit
    19.10.2011.
    Beiträge
    33

    Standard

    Also im Browser funktioniert nun alles, allerdings habe ich die Route als Endpoint konfiguriert. Wenn ich einen Webhook darauf ausführe bekomme ich letzt leider einen 400er Bad Request Error
    PHP-Code:
    <?php
    // src/Controller/DefaultController.php
    class DefaultController extends Controller
    {
        private 
    $db;

        public function 
    __construct(Connection $db)
        {
            
    $this->db $db;
        }
        public function 
    __invoke(Request $request)
        {
            
    $response = new Response(
                
    'Sample Response.'
            
    );
            return 
    $response;
        }
    }
    ?>
    Vorher hatte ich es als Annotation konfiguriert, da hat es funktioniert
    PHP-Code:
    <?
        /**
         * @Route("/stripe")
         *
         * @return JsonResponse
         */
        public function stripeAction()
        {
            echo 'demoresponse';
        }
    ?>
    Woran kann das nur liegen?
    Geändert von Spooky (14.11.2019 um 15:23 Uhr)

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

    Standard

    Moderation: PHP code bitte in [php] Tags posten.

    Generell: sieh dir mal den PSR-1 Standard an. Du solltest keine PHP Closing Tags in PHP Dateien verwenden. Und auch keine PHP Short Open Tags ("<?").

  4. #44
    Contao-Nutzer Avatar von mucona-media
    Registriert seit
    19.10.2011.
    Beiträge
    33

    Standard

    Hey Spooky,
    danke für den Hinweis, ich geh den PSR-1 Guide durch.
    Ich hab den Code nur für den Post in <? ?> gekapselt und nur Stücken reinkopiert, der "Echte Code" ist Standardkonform und benutzt ja auch namespaces und uses
    Es hat übrigens jetzt auch geklappt, indem ich die Annotation wieder eingebaut habe.
    Vielen Dank für deine Mühe!

  5. #45
    Contao-Nutzer
    Registriert seit
    06.11.2009.
    Beiträge
    134

    Standard JS

    Und wie bekommt man "Hello World" nun per JS auf den Bildschirm gezaubert? Wenn ich z. B. eine Frontend-Modul "Eigener HTML-Code" unter Themes anlege, müsste ich das doch nun irgendwie auf den Screen kriegen?

    PHP-Code:
    // src/Controller/DefaultController.php

    namespace App\Controller;

    use 
    Symfony\Component\Routing\Annotation\Route;
    use 
    Symfony\Component\HttpFoundation\JsonResponse;

    class 
    DefaultController
    {
        
    /**
         * @Route("/ajax")
         *
         * @return JsonResponse
         */
        
    public function ajaxAction()
        {
            return new 
    JsonResponse(['Hello World!']);
        }

    Geändert von Sitting Bull (16.01.2020 um 09:45 Uhr)

  6. #46
    Contao-Nutzer
    Registriert seit
    06.11.2009.
    Beiträge
    134

    HTML

    Niemand eine Idee?

    Irgendwie fehlt mir hier nur der zündende Funke. Ist doch eigentlich bestimmt ganz einfach?

    Danke im Voraus für helfende Tipps!

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

    Standard

    Ich verstehe die Frage nicht ganz. Wo genau brauchst du Hilfe?

  8. #48
    Contao-Nutzer
    Registriert seit
    06.11.2009.
    Beiträge
    134

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ich verstehe die Frage nicht ganz. Wo genau brauchst du Hilfe?
    Hi Spooky,

    ich muss doch irgendwo im Frontend-Template den Ajax-Aufruf machen und dann die Antwort auswerten, also quasi ein JS-Script, so wie hier z. B.

    Code:
    $.ajax({
            url: "php/getInfo.php",
            data: {name: "AxxG", id: event.target.id},
            datatype: "json",
            type: "POST",
            success: function(data) { clickJStoPHPResponse(data); }
       });
    Was wäre z. B. die richtige URL?

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

    Standard

    Die URL weißt nur du selbst. In dem von dir gepostet Code hast du folgende Route eingestellt:
    Code:
    @Route("/ajax")

  10. #50
    Contao-Nutzer
    Registriert seit
    06.11.2009.
    Beiträge
    134

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Die URL weißt nur du selbst. In dem von dir gepostet Code hast du folgende Route eingestellt:
    Code:
    @Route("/ajax")
    Ich hatte das aus Deinem früheren Beispiel in diesem Thread entnommen und so in meine Extension eingebaut. Wird mit
    Code:
    @Route("/ajax")
    als URL dann quasi die Funktion ajaxAction() aufgerufen, oder reicht als URL einfach nur "/ajax"?

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

    Standard

    Das kommt darauf an. Die volle absolute URL dieser Route wäre https://example.org/ajax

  12. #52
    Contao-Nutzer
    Registriert seit
    06.11.2009.
    Beiträge
    134

    Standard

    Habe jetzt einfach mal als HTML-Code bei Contao folgendes eingegeben:

    HTML-Code:
    <script>
    var jqxhr = $.ajax("/ajax")
      .done(function() {
        alert( "done" );
      })
      .fail(function() {
        alert( "fail" );
      })
      .always(function() {
        alert( "always" );
      });
    </script>
    hier bekomme ich auf jeden Fall mal die Meldung "fail" zurück. Mit @Route("/ajax") als URL kommt garnichts, auch kein "fail"?!
    Ich hatte Deinen Beispiel-Code vom 10.05.2017 in diesem Thread als Vorlage genommen, quasi 1:1 so eingebaut.

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

    Standard

    Funktioniert die URL überhaupt?

  14. #54
    Contao-Nutzer
    Registriert seit
    06.11.2009.
    Beiträge
    134

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Funktioniert die URL überhaupt?
    die URL ist local
    Code:
    "cto4cm.local/de"
    Wenn ich
    Code:
    "cto4cm.local/de/ajax"
    direkt aufrufe, kommt ein 404er, scheint also nicht korrekt zu sein?!

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

    Standard

    Nein, die URL ist wenn dann cto4cm.local/ajax

  16. #56
    Contao-Nutzer
    Registriert seit
    06.11.2009.
    Beiträge
    134

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Nein, die URL ist wenn dann cto4cm.local/ajax
    Funktioniert leider auch nicht, keine Ahnung wo da mein Gedankenknick ist.

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

    Standard

    Was passiert wenn du die URL aufrufst? Ist dein Service und die Routes korrekt registriert?

  18. #58
    Contao-Nutzer
    Registriert seit
    06.11.2009.
    Beiträge
    134

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Was passiert wenn du die URL aufrufst? Ist dein Service und die Routes korrekt registriert?
    404 ... ich glaube, ich muss mich mal etwas intensiver mit den Rountings beschäftigen, da hakt es noch ziemlich. Danke erst mal Spooky ... ich melde mich wieder, wenn ich irgendwas zustande gebracht habe ;-)

  19. #59
    Contao-Nutzer
    Registriert seit
    15.03.2010.
    Ort
    AT
    Beiträge
    204

  20. #60
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    Bezüglich dem

    HTML-Code:
    Attempted to load class "Database" from the global namespace.
    das Problem hatte ich auch, als ich versuchte eine 3.5 Extension zu portieren.
    Das Problem ist, dass hier mit Relativen Contao Namespacing gearbeitet wurde.

    PHP-Code:
    <?php
    \Database::getInstance();
    und nicht wie es sein sollte:

    PHP-Code:
    <?php
    \Contao\Database::getInstance();
    Um das Problem zu lösen habe ich mir die Contao\CoreBundle\Controller\FrontendController Klasse angeschaut.
    Der Trick ist, es benötigt für das Registrieren der globalen Namespaces einen Aufruf von $this->initializeContaoFramework();

    PHP-Code:
    <?php

    use Contao\CoreBundle\Controller\AbstractController;

    class 
    AjaxController extends AbstractController {
        
    /**
         * @Route("/ajax")
         */
        
    public function ajax()
        {
            
    $this->initializeContaoFramework();

            
    //... more code
        
    }
    }
    Geändert von gebi84 (13.05.2020 um 13:14 Uhr)

  21. #61
    Contao-Fan
    Registriert seit
    19.06.2009.
    Beiträge
    827

    Standard

    Zitat Zitat von Sitting Bull Beitrag anzeigen
    Und wie bekommt man "Hello World" nun per JS auf den Bildschirm gezaubert? Wenn ich z. B. eine Frontend-Modul "Eigener HTML-Code" unter Themes anlege, müsste ich das doch nun irgendwie auf den Screen kriegen?

    PHP-Code:
    // src/Controller/DefaultController.php

    namespace App\Controller;

    use 
    Symfony\Component\Routing\Annotation\Route;
    use 
    Symfony\Component\HttpFoundation\JsonResponse;

    class 
    DefaultController
    {
        
    /**
         * @Route("/ajax")
         *
         * @return JsonResponse
         */
        
    public function ajaxAction()
        {
            return new 
    JsonResponse(['Hello World!']);
        }



    Das funktioniert soweit. Aber wie kann ich angehängte Post-Daten auslesen?

  22. #62
    Contao-Nutzer Avatar von Tastaturberuf
    Registriert seit
    14.03.2011.
    Ort
    Berlin
    Beiträge
    197
    User beschenken
    Wunschliste
    Tastaturberuf | Code with ♥ and Contao.

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
  •