Variable weitergeben mit AJAX?

karl123

Erfahrenes Mitglied
GutenTag,

ich beziehe mich auf mein Posting am 11.12. "Variablen weitergeben" im php-Forum. Man hat dort versucht, mir zu helfen, ist aber nicht richtig gelungen. Wahrscheinlich habe ich das Problem nicht ausreichend formuliert. Hier nun ein neuer Ansatz:

Auf den Seiten meines Webauftritts möchte ich eine Zusatzinformation darstellen, der Benutzer kann das aber ausschalten und wieder einschalten. Das wird so realisiert, dass beim Anklicken eines Symbols eine Javascript-Funktion den CSS-Stil display von inline auf none und umgekehrt schaltet. Wenn der Benutzer nun die Seite verlässt und eine andere Seite innerhalb meines Webauftritts, ist der Zustand der Zusatzinformation verloren.

Ich könnte bei jedem Link auf eine meiner Seiten, die Zustandsinformation per GET weitergeben; das möchte ich aber nicht.
Ich könnte bei jeder Zustandsänderung die Seite neu laden und den Zustand per POST weitergeben.

Ich habe derzeit eine SESSION, in der ich den Zustand idealerweise speichern könnte. Was ich jetzt nur brauche, ist das Laden der SESSION dann, wenn der Benutzer eine Änderung der Zustandsinformation per Klick startet.

Ich habe noch nie etwas mit AJAX gemacht, denke aber, dass es ohne AJAX nicht funktioniert. Kann mir jemand da helfen?
 
Hi,

da Du nur ein serverseitiges Script anstossen möchtest und den Response nicht brauchst, könntest Du einfach ein image-Object in Javascript anlegen, dessen src Du bei Bedarf neu setzt auf "savestate.php?details=1" bzw. "savestate.php?details=0".
Damit Du keine Probleme mit dem Cache bekommst, hängst Du als unbenannten Parameter noch den aktuellen Zeitstempel dran.

LG
 
Hi,

Funktioniert prächtig! Hier mein Javascript:
Code:
function showSitemap() {
	document.getElementById("arrowShow").style.display = "none";
	document.getElementById("arrowHide").style.display = "inline";
	document.getElementById("showmap").style.display = "inline";
	document.getElementById("sitemap").value = "show";
	dummy = new Image();
	dummy.src='Sitemap.php?zeige=show&zeit=<?php echo time(); ?>';
}

function hideSitemap() {
	document.getElementById("arrowHide").style.display = "none";
	document.getElementById("arrowShow").style.display = "inline";
	document.getElementById("showmap").style.display = "none";
	document.getElementById("sitemap").value = "hide";
	dummy = new Image();
	dummy.src='Sitemap.php?zeige=hide&zeit=<?php echo time(); ?>';
}

und hier das PHP-Script:
PHP:
<?php
session_start();
if (isset($_GET['zeige']) && ($_GET['zeige']=='show' || $_GET['zeige']=='hide')) $_SESSION['sitemap'] = $_GET['zeige'];
?>

Und dann noch der Aufruf im HTML:
HTML:
    <span id="arrowShow"><a title="show" class="arrowlink" href="#" onclick="showSitemap()">&laquo;&laquo;&laquo;</a></span>
    <span id="arrowHide"><a title="hide" class="arrowlink" href="#" onclick="hideSitemap()">&raquo;&raquo;&raquo;</a></span>

Vielen Dank für deine Hilfe.
Noch eine Frage: muss ich das Image-Objekt wieder löschen? Wenn ja, wie?
 
Hi,

Global erstellen und dann lokal nutzen kriege ich irgendwie nicht hin. Wahrscheinlich liegt es daran, dass ich den Code des Javascript im Header habe, wo er nicht ausgeführt wird.
Da gibt es doch irgendwas, damit der Code dort ausgeführt wird, aber das weiß ich nicht mehr. Sonst müsste ich mit body onload arbeiten.
(Javascript ist nicht so mein Ding; ich nutze es recht selten)
 
Hi,

Global erstellen und dann lokal nutzen kriege ich irgendwie nicht hin. Wahrscheinlich liegt es daran, dass ich den Code des Javascript im Header habe, wo er nicht ausgeführt wird.

Natürlich wird der Code dort ausgeführt. Sonst wären Deine Funktionen ja gar nicht definiert. :suspekt:

HTML:
<head>
   <script type="text/javascript">
      dummy = new Image();

      function showSitemap() {
	dummy.src='Sitemap.php?zeige=show&zeit=<?php echo time(); ?>';
      }

      function hideSitemap() {
	dummy.src='Sitemap.php?zeige=hide&zeit=<?php echo time(); ?>';
      }
   </script>
</head>

LG
 

Neue Beiträge

Zurück