Hi,
Kannst du machen, solltest du aber lassen. Wenn du mit Javascript automatisch und grundsätzlich an deine Bedienelemente Aktionen ranhängst, und die Bedienelemente so gestaltest, dass sie auch ohne Javascript eine sinnvolle Aktion ausführen, brauchst du keine zwei Seitenversionen zu beachten.
Die per Javascript gestarteten Aktionen verhindern dann einfach, dass die Standard-Aktion, die sich aus dem HTML ergibt, ausgeführt wird, um nicht doppelte Arbeit zu tun.
Hast völlig Recht. Wollte zwar zu Anfang auch keine vollkommen unterschiedlichen Versionen schreiben, allerdings haben sich große Teile des Codes unterschieden. Habe mir diesbezüglich nochmal Gedanken gemacht und, wie du sagst, kann ich die Navigation natürlich so gestalten, dass sie sowohl mit, als auch ohne Javascript funktioniert.
Nun binde ich per PHP ein Skript ein, welches je nach übergebenen GET Parametern den entsprechenden Inhalt lädt. Bei ausgeschaltetem Javascript wird die gesamte Seite neu geladen, bei eingeschaltetem JS lediglich das Skript, welches für den Inhalt zuständig ist, dabei aber trotzdem variabel auf übergebene Parameter reagiert und den angeforderten Inhalt einbindet.
Nun zu meinem Problem:
Beim Laden des Userbereichs wird ein Datenbankobjekt in PHP erstellt.
Dieses Objekt lebt nicht lange - nur bis zum Skriptende dieses einen Seiten-Requests. Du musst das Objekt also sowieso bei reiner HTML-Navigation für jeden Request neu erstellen.
Wenn ich nun den Inhalt dynamisch per Javascript tausche, steht dieses Objekt im angeforderten PHP-Skript natürlich nicht mehr zur Verfügung, da das zu ladende PHP-Skript in den bereits verarbeiteten Userbereich geladen wird.
Hier ist dein Denkfehler: Dein Request (egal ob Ajax oder sonstwie) erfordert DB-Zugriff, also mach dir das Objekt neu und greife auf die DB zu.
Vielen Dank! Genau dort war er :) Die Datenbankzugriffe erfolgen jetzt nur noch in den relevanten Modulen. Vor diesem Problem stande ich bislang nie, da ich JS/Ajax bislang komplett gemieden habe.
Somit habe ich keinen Zugriff auf meine Datenbank.
Deine eigene Schuld. :)
In der Tat :)
Derzeit verwende ich folgende Lösung: Die einzelnen Inhalte meiner Seite (PHP-Skripte, die Datenbankzugriff benötigen) werden geparsed und mittels
ob_start()
,ob_get_contents()
in den Cache geschrieben. Aus dem Cache wird dann eine HTML-Seite erstellt und auf dem Server abgelegt. Diese kann ich per XMLHttpRequest laden.Üble Bastel-Lösung! :(
Das war der Grund, weshalb ich hier nach Hilfe gesucht habe :)
Vielen Dank für deine Mühe!
Viele Grüße und einen angenehmen Abend ;)
Jonas