[Frage] Automatischer Aufruf einer funktion mit javascript

  • adwin1 adwin1
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    18. 01. 2018, 11:41

    Hallo zusammen,

    ich versuche mich seit ein paar Wochen an Typo3 Extension Programmierung (Umfragetool) und bin schon relativ gut weitergekommen. Nun bin ich soweit, dass ich die Ergebnisse der Umfrage in die Datenbank schreiben möchte. Dazu möchte ich am Ende der Javascript-Umfrage (welche in der add.html ausgeführt wird) eine Funktion aufrufen, die ich im UmfrageController programmiert habe. Kann mir da bitte jemand einen Tipp geben, wie eine Funktion automatisch in der HTML-Datei aufgerufen wird?

    Hier der Auszug, wo der Code rein sollte:
    survey
    .onComplete
    .add(function (result){
    ... hier sollte nun die Funktion zum schreiben in die Datenbank automatisch aufgerufen werden.
    z.B.: <f:form action..>
    }

    Vielen Dank!


  • 1
  • Teisinger Teisinger
    Jedi-Meister
    0 x
    381 Beiträge
    26 Hilfreiche Beiträge
    18. 01. 2018, 20:32

    http://www.fassing.eu/loesungen/extbase-fluid/ajax-aufruf/

    Hilft dir das?

    https://github.com/groundstack-org

  • 0 x
    97 Beiträge
    3 Hilfreiche Beiträge
    19. 01. 2018, 08:18

    Habe das zum Einrichten genutzt:
    https://www.typo3lexikon.de/typo3-tutorials/ajax/eid-beispiele.html
    Und das zum Auswerten und weitegeben an den Controller:
    http://labor.99grad.de/2017/02/18/typo3-eid-dispatcher-fur-typo3-ab-7-6/

    Über eID wäre das dann.

  • adwin1 adwin1
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    19. 01. 2018, 08:31

    Super, vielen Dank. Ich versuche es mal und gebe dann Bescheid! :)

  • adwin1 adwin1
    Typ im Roten Hemd
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    20. 01. 2018, 19:07

    Hallo,

    leider schaffe ich das auch damit nicht. Jetzt hab ich folgende Situation:
    Wenn das Java-Script ausgeführt wird, passiert nichts. Nach manuellem Aufruf des links (output von console.log(link2)) wird mir die Seite angezeigt. Leider aber nicht mit dem Inhalt der Variable resultsting sondern es wird einfach "resultstring" angezeigt! :(

    in der Setup.ts habe ich das hinzugefügt:
    ajax = PAGE
    ajax {
    typeNum = 99
    config {
    disableAllHeaderCode = 1
    additionalHeaders = Content-type:application/json
    admPanel = 0
    debug = 1
    }
    10 < tt_content.list.20.umfragentool_umfragelisting
    }

    Das Java-Script-Snippet sieht wie folgt aus:
    survey.onComplete.add(function (result) {
    var resultstring=JSON.stringify(result.data); // --> Hier werden die Daten in einem String gespeichert. Dieser soll übertragen werden. Beispiel: {"1":"100%","2":"33%","3":"66%"}
    var link='<f:uri.action action="ajax" controller="Umfrage" pageType="99" arguments="{loesung: 'resultstring'}"/>';
    var link2=link.replace(/amp;/g,'');
    $.ajax({
    url: link2,
    method: 'POST',
    dataType: 'json',
    data: resultstring,
    });
    console.log(link2);

    UmfrageController.php:
    /**
    * @param string $loesung
    * @return void
    */
    public function ajaxAction(string $loesung)
    {
    \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($loesung);
    }

    Die ajax.html ist im Grunde leer. Mir reicht es, wenn ich sehe, dass im Dump die Werte übergeben worden sind.

    Jemand noch eine Idee?

    Danke!

  • 1