Ergebnis 1 bis 8 von 8

Thema: contao 3.1.2: ajax in eigenem script verwenden

  1. #1
    Contao-Nutzer Avatar von steff74
    Registriert seit
    01.09.2009.
    Ort
    weinviertel, österreich
    Beiträge
    86

    Standard contao 3.1.2: ajax in eigenem script verwenden

    hallo leute,

    ich muss in contao 3.1.2, jquery wird geladen, ein eigenes script einbinden. das klappt auch prima.

    nun wollte ich ajax einsetzen und bekomme in der firebug-console die meldung, dass die aufgerufene datei (test2.php) den status "302" aufweist.

    im script (templates/test.php) wird folgendes ausgeführt

    Code:
    <script>
    $('#blabla').click(function() {
      $.post(
        "test2.php",
        function(data) {
          .....
        }
      );
    });
    </script>
    heisst die firebug-meldung, dass auf die datei test2.php nicht zugegriffen werden darf?

    vielen dank!

    lg aus dem sonnigen nö
    stefan

  2. #2
    Contao-Fan Avatar von Zero
    Registriert seit
    25.05.2010.
    Ort
    Korntal
    Beiträge
    520
    User beschenken
    Wunschliste

    Standard

    Da liegst du richtig
    https://github.com/contao/core/blob/...ates/.htaccess

    Benutze am besten dir simple Ajax Erweiterung von Leo Unglaub. Die hat alles was du brauchst.
    Mein Blog -> brothers-project.de

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

    Standard

    Oder die ajax.php (ER: [ajax]). Bei der ajax.php kannst du dir einfach den Output eines Front End Modules, eines Content Elements oder eines Form Fields per AJAX holen. Wenn du eine eigene Extension mit Modul verwendest, kannst du separat eine ->generateAjax() Funktion verwenden, ansonsten wird der Output der ->generate() verwendet, wenn du den Parameter g=1 an die ajax.php übergibst. Einen dispatchAjax Hook gibt es darüberhinaus auch. Die ajax.php berücksichtigt außerdem Zugriffsrechte und ersetzt auch Inserttags.

    Vorteil der SimpleAjax.php (ER: [simple_ajax]) ist, dass du im Gegensatz zur ajax.php volle Kontrolle über den Response hast. Heißt aber auch dass du alles selbst machen musst (inkl. check auf Zugriffsrechte etc.). Wenn du per AJAX einfach den Output schon fertiger Module benötigst ist wohl die ajax.php die einfachere Variante.
    Geändert von Spooky (26.09.2013 um 22:15 Uhr)

  4. #4
    Contao-Nutzer Avatar von steff74
    Registriert seit
    01.09.2009.
    Ort
    weinviertel, österreich
    Beiträge
    86

    Standard

    vielen dank für die antworten.
    ich werde mich mal mit simpleajax beschäftigen

    lg
    stefan

  5. #5
    Contao-Nutzer
    Registriert seit
    05.10.2013.
    Beiträge
    25

    Standard

    Hallo,

    ich versuche mich auch gerade an contao_simple_ajax, aber ich blicke nicht so recht durch.
    Wie kann ich das Tool in meiner eigenen Extension verwenden?

    config.php meiner Extension:
    PHP-Code:
    $GLOBALS['TL_HOOKS']['simpleAjax'][] = array('stefan''myMethod'); 
    meine Klasse in meiner Extension:
    PHP-Code:
    class stefan extends System {

        public function 
    myMethod()
        {
            if (
    $this->Input->get('acid') == 'myrequest') {
            
                
    $arrReturn = array('foo''bar''foobar');
                
                
    header('Content-Type: application/json');
                echo 
    json_encode($arrReturn);
                exit;
            }
        }

    Reicht das schon so? Wie komme ich jetzt aus dem Frontend auf die URL, wo ich die Ausgabe erhalte?
    http://mydomain/?acid=myrequest funktioniert leider nicht.

    Oder muss man contao_simple_ajax noch irgendwo im BE aktivieren? Hat jemand evtl. mal ein funktionierendes Beispiel oder eine andere Extension für Contao 3, wo man es sich besser anschauen kann?

    Gruß,
    Stefan

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

  7. #7
    Contao-Nutzer
    Registriert seit
    05.10.2013.
    Beiträge
    25

    Standard

    Habe ich versucht, klappt aber nicht:

    http://mytest/SimpleAjax.php?acid=myrequest

    GET /SimpleAjax.php?acid=myrequest HTTP/1.1
    Host: mytest
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Cookie: PHPSESSID=k0oej54qm35g5svifes72slrl4; BE_USER_AUTH=1e361e6787f6445b3f5f8b6afa3088344e526 3f8; BE_PAGE_OFFSET=0
    Connection: keep-alive
    Cache-Control: max-age=0

    HTTP/1.0 500 Internal Server Error
    Date: Wed, 09 Oct 2013 08:35:14 GMT
    Server: Apache/2.2.22 (Ubuntu)
    X-Powered-By: PHP/5.3.10-1ubuntu3.8
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Vary: Accept-Encoding
    Content-Encoding: gzip
    Content-Length: 20
    Connection: close
    Content-Type: text/html
    ----------------------------------------------------------
    http://mytest/SimpleAjaxFrontend.php?acid=myrequest

    GET /SimpleAjaxFrontend.php?acid=myrequest HTTP/1.1
    Host: mytest
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Cookie: PHPSESSID=k0oej54qm35g5svifes72slrl4; BE_USER_AUTH=1e361e6787f6445b3f5f8b6afa3088344e526 3f8; BE_PAGE_OFFSET=0
    Connection: keep-alive

    HTTP/1.0 500 Internal Server Error
    Date: Wed, 09 Oct 2013 08:35:19 GMT
    Server: Apache/2.2.22 (Ubuntu)
    X-Powered-By: PHP/5.3.10-1ubuntu3.8
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Vary: Accept-Encoding
    Content-Encoding: gzip
    Content-Length: 20
    Connection: close
    Content-Type: text/html

  8. #8
    Contao-Nutzer
    Registriert seit
    05.10.2013.
    Beiträge
    25

    Standard Namespaces & Hooks?

    Hallo,

    also das Problem scheint irgendwie mit den Namespaces zusammenzuhängen. Ich habe dieses Beispiel genommen, was sofort funktioniert hat.

    Dann habe ich in das Beispiel einen namespace "hans" eingefügt und die autoload.php entsprechend modifiziert:

    PHP-Code:
    namespace hans;

    class 
    AjaxRequestClass extends System 
    {
      ...

    autoload.php
    PHP-Code:
    /**
     * Register the namespaces
     */
    ClassLoader::addNamespaces(array
    (
        
    'hans',
    ));


    /**
     * Register the classes
     */
    ClassLoader::addClasses(array
    (
        
    'hans\AjaxRequestClass' => 'system/modules/ajaxrequest/AjaxRequestClass.php',
    )); 
    config.php
    PHP-Code:
    $GLOBALS['TL_HOOKS']['simpleAjax'][] = array('AjaxRequestClass''AjaxRequestMethod'); 
    Und mit vorhandenem Namespace funktioniert es nicht mehr. Kann das jemand bestätigen?
    Oder muss meine config.php anders ausschauen?


    Gruß,
    Stefan

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
  •