[TYPO3-german] AJAX im Plugin mit eID - Zugriff auf Session
Dr. Dieter Porth
web37p2 at web59550.greatnet-hosting.de
Mon Jun 19 20:03:15 CEST 2017
Hallo David,
soweit ich weiß, gibt es kein zwei Codierungen für das Amp-Zeichen '&'.
Es ist also fraglich, ob deine Lösungsbeschreibung dem Nächsten helfen
wird. Oder habe ich dich falsch verstanden?
Dass es aktuell funktioniert, kann bei TYPO3 immer AUCH besagen, dass du
mal an einer funktionierenden Variante vorbeigekommen bist, die sich
zufällig etwas hartnäckiger in einer der Caches temporär festgesetzt
hat. Besonders Irrsinn-fördernd sind RealUrl-Mappings auf fehlerhafte
Links, weil auch mehrfache Cache-Löschen den Fehler nicht beseitigt.
Es könnte aber auch sein, dass deine TypeNum-Definition den
Session-Controller jetzt direkt anspricht., da pageType vor der pageId
ausgewertet wird.
Ich vermute, dass du eine Variation deiner schon erwähnten Definition
verwendest, die u.a. folgende Zeile enthielt:
10 < tt_content.list.20.kksession2_kksession2
Die Schreibweise, die ich zuerst bei der Extension Mask gesehen habe,
habe ich bislang noch nicht wirklich verstanden, weshalb ich nicht sagen
könnte, warum und nach welchen Prinzipien sie funktioniert. Oder
verwendest du jetzt beim TypeNum die Bootstrap-Methode.
Funktioniert dein Konstrukt auch bei folgendem
...?id=965&type=99&...
, wobei die Seite mit der Id=965 existieren sollte?
<script>
var ajaxUrl = '<f:uri.action action="session" pageType="99"
page="965"/>';
</script>
Aber ich freue mich für dich, dass du scheinbar eine Lösung gefunden hast.
Mit besten Grüßen
Dieter Porth
P.S.
Funktioniert dein Konstrukt auch, wenn du einen zweiten Controller, z.B.
IndexDoofController, definierst, der eine Session-Action enthält, die
was anderes macht?
Funktioniert dein Konstrukt auch ohne Angabe der Session-Action im Link,
was auf einen TypeNum-Einfluss oder Cache-Renitenz hindeuten würde.
Am 18.06.2017 um 19:52 schrieb David Brünner:
> :-D JIPIII :-D
>
> Ich habs!!!!
>
> Der einzige Fehler war die Codierung der URL.
> So sieht meine Index.html aus:
> <script>
> var ajaxUrl = <f:uri.action action="session" pageType="99"/>
> </script>
>
> An folgenden URL geht dann der Ajax-Request: xxx?id=1&type=99&...
> Der muss aber heißen: xxx?id=1&type=99&
> ==> & NICHT &
>
> Komisch ist nur das mir dann TYPO3 garnicht mekert.
> Auch nix von wegen: Session nicht definiert (wenn der Eintrag für
> sessionAction in der ext_localconf.php fehlt).
>
> Hier mein (fast) vollständiger Code:
> IndexController:
> <?php
> namespace KKSoftware\Kksession\Controller;
>
> use TYPO3\CMS\Core\Utility\GeneralUtility;
> use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
>
> class IndexController extends ActionController {
> public function indexAction() {
>
> }
>
> public function sessionAction() {
> /** @var
> \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController $TSFE */
> $TSFE = $GLOBALS['TSFE'];
> $mode = GeneralUtility::_POST('mode');
> $data = null;
> switch ($mode) {
> case 'schreibe':
> $sesVal = GeneralUtility::_POST('sesVal');
> $TSFE->fe_user->setKey('ses', 'sesVal', $sesVal);
> break;
> case 'lese':
> $data = $TSFE->fe_user->getKey('ses', 'sesVal');
> break;
> }
> return json_encode(['sesVal' => $data]);
> }
> }
>
> Index.html
> <script>
> var ajaxUrl = '<f:uri.action action="session" pageType="99"/>';
> </script>
>
> session.js
> $().ready(function () {
> ajaxUrl = ajaxUrl.replace(/&/g, '&');
>
> $('button').on('click', function() {
> var mode = $(this).attr('data-mode');
> $.ajax({
> url: ajaxUrl,
> method: 'POST',
> dataType: 'json',
> data: {
> mode: mode,
> sesVal: $('#test').val()
> },
> success: function (result) {
> console.log(result);
> },
> error: function () {
> console.log('error');
> }
> });
> });
> });
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
--
----
Dr. Dieter Porth - Web-Entwickler
More information about the TYPO3-german
mailing list