Ergebnis 1 bis 2 von 2

Thema: Missing Ajax action - Ajax Form Submit - Backend

  1. #1
    Contao-Nutzer
    Registriert seit
    23.04.2018.
    Beiträge
    7

    Standard Missing Ajax action - Ajax Form Submit - Backend

    Hi,
    ich möchte im Backend ein Element bearbeiten. Dieses möchte ich via Ajax speichern ohne das die Seite Reloaden soll. Dies fange ich per jQuery ab und übergebe Daten per Ajax an die in der Form vorhanden Action URL.

    Soweit funktioniert alles, jedoch hat Contao irgendwie ein Problem. Selbe URL, genau die selben überlieferten Post-Daten, aber unterschiedliche Ergebnisse. Ohne Ajax läuft alles normal, mit Ajax kriege ich aber folgende Fehlermeldung:
    Missing Ajax action

    HTML-Code:
    <script>
    jQuery.noConflict();
    
    (function($) {
    
        $(document).on('click','form button[type=submit]',function(e){
            $("button[type=submit]").removeAttr('clicked');
            $(this).attr("clicked", "true");
        });
    
        $(document).on('submit','form',function(e){
            e.preventDefault();
    
            $.ajax({
                method: $(this).attr('method'),
                url: $(this).attr('action'),
                data: $(this).serialize()+"&"+$("form button[clicked=true]").attr('name')+"=",
                contentType: $(this).attr('enctype'),
                success: function (data) {
                    $('#main').html(main_content);
                }
            });
        });
    })(jQuery);
    </script>
    Worauf muss ich achten? Fehlt etwas im "Header"? Oder doch in der URL?

    Folgendes hab ich auch ausprobiert: Sobald "contentType: false" eingetragen ist, werden zwar keine Daten übermittelt, bekomme dafür aber keine Fehlermeldung mehr. Es muss also etwas in der Verarbeitung der Formular passieren. Die Post-Daten sind genau die selben.

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

    Standard

    Soviel ich weiss, müsstest du per POST eine method schicken und kanns dann mittels den Hooks $GLOBALS['TL_HOOKS']['executePreActions'] oder $GLOBALS['TL_HOOKS']['executeostActions'] den Code abfangen.

    Schau mal hier:
    https://github.com/contao/core/blob/...asses/Ajax.php

    Dieser Klasse wird vom Backend folgendes übergeben
    Code:
    if ($_POST && \Environment::get('isAjaxRequest'))
    
    {
    
    $this->objAjax->executePostActions($objDca);
    
    }
    Gesendet von meinem SM-G925F mit Tapatalk

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
  •