[TYPO3-german] Best Practice: Ajax calls vom Frontend? Ich dreh durch...

Gerhard Mehsel sparking at gmx.net
Mon Nov 2 15:03:27 CET 2015


Hallo Stephan,

vielen Dank für deine ausführliche Antwort!

Bzgl. Methode 2, also mit der Extension typoscript_rendering:
Den Link mit dem ViewHelper erzeugen und per Ajax versenden, aber eben 
nicht als GET sondern als POST, somit kann ich beliebig Werte aus der 
Seite (z.B. aus einem Formular) mit an den Request anhängen, weil im 
Falle eines POST Request der cHash egal ist?

Hab ich das so richtig verstanden?

Schöne Grüße,
Gerd




Am 26.10.15 um 18:03 schrieb Stephan Schuler:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> Hallo Gerd.
>
> Variante 1 würde ich nur noch verwenden, wenn das AJAX wahnsinnig rudimentär ist. Sobald eine Datenbank, TypoScript oder TypoLink im Spiel sind ist der Aufwand ebenso wie die Fehleranfälligkeit enorm.
>
> Die Methode 2 ist meiner Meinung nach die sinnvollere. Du musst hier eben nicht für jeden kleinsten Ajax-Fitzel einen eigenen PageType konfigurieren sondern gibst die AJAX-Action einfach im ViewHelper an.
>
> Variante 3 ginge zwar auch, ist aber unnötiger Aufwand. Zumal eben jedes neue AJAX einen neuen PageType fordert sodass der Aufwand regelmäßig mehrfach anfällt. Schon wenn man für ein einziges AJAX-Modul unterschiedliche Actions ansprechen möchte (z.B. wenn eine Standortsuche wahlweise eine Umkreissuche von Ladengeschäften oder aber eine Liste mit Onlineshops zeigen soll für die es idr. Keine Umkreissuche geben kann) erkennt man, dass der Aufwand jedes Mal erneut anfällt.
>
> Daher meine eindeutige Empfehlung zu Helmuts hervorragender Extension.
>
> Wenn Dir der cHash zu schaffen macht musst Du ihn wahrscheinlich konfigurieren.
>
> Der cHash-Mechanismus sorgt dafür, dass eine Seite mit unterschiedlichen GET-Parameter gecacht werden kann, es dabei aber nicht möglich ist, von außen beliebig viele Cacheeinträge zu erzwingen. Würde TYPO3 für jede URL einen Cacheeintrag unabhängig vom cHash-Parameter anlegen würde ich mir ein Script schreiben, das Deinen Server mit ?foo=1, ?foo=2, ?foo=3 und fortlaufend aufruft. Das Problem sollte klar sein — entweder ist nach kurzer Zeit deine Platte voll oder das Finden eines passenden Cacheeintrages für eine Seite dauert dank gigantischem Datenbankindex länger als die Seite neu zu erzeugen.
>
> Das heißt natürlich nicht, dass eine Seite keine Benutzereingaben haben darf. Nur sollten die Benutzereingaben eben nicht in den Cache wandern sondern bei jedem Request erneut ausgewertet werden.
>
> In der Regel werden solche Parameter per POST übertragen, dann sind sie in keinem Fall für den Cache relevant.
> Wenn Du Daten per GET übertragen möchtest die den Cache beeinflussen musst Du die Links per TypoLink erzeugen.
>
> Wenn Du Daten per GET übertragen möchtest die den Cache nicht beeinflussen, solltest Du sie vom cHash ausschließen. Hierfür gibt es die Konfigurationsoption „cHashExcludedParameters“.
> Wenn Du Daten per GET übertragen möchtest die den Cache beeinflussen und Benutzereingaben sind … machst Du was falsch :).
>
> http://www.typo3.net/en/install-tool/frontend-konfiguration/#cHashExcludedParameters
>
> Ich kenne leider keine offizielle Dokumentation dafür, allerdings ist der Wert im Install-Tool beschrieben.
>
> Gruß,
>
>
>
>
> Am [DATE] schrieb "typo3-german-bounces at lists.typo3.org im Auftrag von Gerhard Mehsel" <[ADDRESS]>:
>
>> Hallo zusammen,
>>
>> ich denke, ich habe nun alle Möglichkeiten, einen Ajax Call vom FE an
>> einen Controller zu senden durchprobiert. Habe TYPO3 6.2.15 im Einsatz,
>> soll natürlich zu gegebener Zeit aktualisert werden können. Leider hat
>> jede Vorgehensweise ein Problem, welches mir immer wieder zu schaffen macht:
>>
>> 1) Zuerst dachte ich eID mit dem AjaxDispatcher, welcher überall
>> kursiert (glaube der ist u.A. von Daniel Lienert). Aber der Dispatcher
>> initialisiert mir das TCA tw. nicht richtig => Datenbankabfragen liefern
>> halb-leere Objekte (uid und pid ist da, weil hardcoded, Rest ist leer).
>> Leider fiel das erst spät auf, aber gut.
>>
>> 2) Dann habe ich die Extension typoscript_rendering von Helmut Hummel
>> ausprobiert, läuft toll, hier kann man aber keine eigenen Argumente aus
>> der Seite per Javascript an den Request anhängen, da dann der cHash
>> Check fehlschlägt. Leider muss ich das aber des öfteren machen. Dann
>> scheint es zusätzl. noch eine Ungewißheit wegen TYPO3 7 zu geben, ob
>> hier der Hook, welchen Helmut verwendet, noch an der richtigen Stelle
>> zur Verfügung steht (habe das aber wegen cHash Problem nicht weiter
>> verfolgt)
>>
>> 3) Zu guter Letzt noch die Ajax Requests mit einem eigenen Pagetype.
>> Läuft auch, aber hier kommen die zusätzlichen Argumente auch nicht in
>> der Actionmethode an.
>>
>>
>> Ich bin jetzt so durch mit dem Zeug, dass ich nicht mehr weiß, wie es
>> weitergeht.
>> Daher die Frage:
>> Wie werden am besten Ajax Calls vom FE aus an einen Controller gesendet?
>> So, dass alles zur Verfügung steht, Datenbankabfragen richtig laufen
>> etc. UND ich eigene beliebige Parameter per Javascript mit übergeben kann?
>> Oder geht das nicht, die Hoffnung stirbt zuletzt?
>>
>> Schöne Grüße,
>> Gerd
>>
>>
> Stephan Schuler
> Web-Entwickler | netlogix Web Solutions
>
> Telefon: +49 (911) 539909 - 0
> E-Mail: Stephan.Schuler at netlogix.de
> Web: websolutions.netlogix.de
>
>
>
>
> netlogix GmbH & Co. KG
> IT-Services | IT-Training | Web Solutions
> Neuwieder Straße 10 | 90411 Nürnberg
> Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
> E-Mail: info at netlogix.de | Web: http://www.netlogix.de
>
> netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338)
> Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634)
> Umsatzsteuer-Identifikationsnummer: DE 233472254
> Geschäftsführer: Stefan Buchta, Matthias Schmidt
>
>
>
> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>
> -----BEGIN PGP SIGNATURE-----
> Version: PGP Universal 3.3.2 (Build 15917)
> Charset: utf-8
>
> wpUDBQFWLlz8pp0IwsibV8MBCLBgA/9G7uOaA8ZF7l+JBVRofDMQzfDzMD3Mu3xH
> j60kMBOxoywGl6W3oW8gvTKC0EsC/O1fXZl5lms77wZYj1uyhI/XD9K1+YwuhV4w
> xmpnawNgN+gYUG+K6uPhILTGUusvtvMdCWX8Q81YiArJ8EB8iPFtCIpU5LW4u3S9
> Xi6B4vCOLQ==
> =2pN3
> -----END PGP SIGNATURE-----
>



More information about the TYPO3-german mailing list