Contao-Camp 2024
Ergebnis 1 bis 4 von 4

Thema: simple_ajax: header kann nicht gesetzt werden

  1. #1
    Contao-Nutzer
    Registriert seit
    10.05.2019.
    Beiträge
    16

    Standard simple_ajax: header kann nicht gesetzt werden

    Hallo zusammen,

    ich bin gerade dabei eine AJAX-Erweiterung für Contao 3.5.2 zu schreiben. Dabei verwende ich die Erweiterung simple_ajax 2.0.0 build 3. Grundsätzlich funktioniert es auch, d.h. ich kann AJAX-Requests an SimpleAjax.php abschicken und bekomme dann eine Antwort von der Handler-Klasse.

    Eines wirft bei mir aber Fragen auf: Ich kann im Handler keine Header-Attribute setzen, d.h. folgendes funktioniert nicht wie ich dachte:

    Code:
    if ($this->Input->post('type') == 'mytype'){
       header('HTTP/1.1 401 Unauthorized');
       header('Content-Type: application/json');
       echo "die";
       exit;
    }
    Dies ergibt den Antwort-Status-Code 200 anstatt 401 und der Content-Type der Antwort ist "text/html". Jetzt weiß ich, dass vor header-Anweisungen kein Output kommen darf. Wo aber liegt das Problem? Meines Wissens habe ich keine zusätzliche Ausgabe zu "die", s.o.. Ich habe noch einen zweiten AJAX-Handler in einem zweiten Modul. Für den habe ich aber in der config-Datei die HOOK-Anweisung vorrübergehend gelöscht.

    Grüße
    Geändert von watchdog (13.05.2019 um 10:38 Uhr)

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

    Standard

    1. Contao 3.5.2 ist schon sehr alt. Du solltest zumindest auf Contao 3.5.40 aktualisieren.
    2. Der Support von Contao 3 ist nun vorbei. Du solltest auf Contao 4 aktualisieren. Dort kannst du dann leichter mit eigenen Controllern arbeiten.
    3. Die [simple_ajax] Extension aus dem alten Contao Extension Repository ist schon sehr alt. Die neuere Alternative ist https://github.com/richardhj/contao-simple-ajax

  3. #3
    Contao-Nutzer
    Registriert seit
    10.05.2019.
    Beiträge
    16

    Standard

    Lagere ich meinen Code in eine ajax.php um und binde diese per include in meiner SimpleAjax.php ein, dann geht das ganze und die Header werden korrekt gesetzt.

    Geht:
    Code:
    public function run ()
    	{	
                  include __DIR__ . '/system/modules/'.$this->Input->post('type').'/ajax.php';
    Geht nicht:
    Code:
    public function run ()
    	{	
                $module = new AjaxRequestClass();
                $module->AjaxRequestMethod();

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

    Standard

    Aktualisiere zuerst alles wie gesagt auf den neuesten - oder zumindest einen neueren - Stand.

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
  •