• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Werte meiner Session werden nicht richtig gesetzt

petz_e

New member
Hallo,

Ich habe ein PHP-JavaScript-AJAX Script welches beim klicken auf einen Link ein paar aktuelle Werte in eine PHP-Session setzen soll.

Das ist der HTML-Link:
Code:
<a href="?order=category" id="a_category" onclick="updatePHPSession(1);">category</a>
welches beim anklicken des Links dieses Script aufruft:
Code:
function updatePHPSession( order ) {
   var xmlHttp;
   try {
      // Firefox, Opera 8.0+, Safari
      xmlHttp = new XMLHttpRequest();
   } catch(e) {
      // Internet Explorer
      try {
         xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch(e) {
         try {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
         } catch(e) {
            alert("Your browser does not support AJAX!");
            return false;
         }
      }
   }
   xmlHttp.onreadystatechange = function() {
      if (xmlHttp.readyState == 4) {
         // empty
         alert(xmlHttp.responseText);
      }
   }
   var n = 0;
   var d = 0;
   if (document.getElementById("name").checked) n = 1;
   if (document.getElementById("date").checked) d = 1;

   var url = "updatePHPSession.php";
   url = url + "?n=" + n;
   url = url + "&d=" + d;
   if (order != 0) url = url + "&o=" + order;
   url = url + "&sid=" + Math.random();

   xmlHttp.open("GET", url, true);
   xmlHttp.send(null);
}
Und das hier ist schlussendlich das PHP-Script:
Code:
<?php
   session_start();
	
   if (isset($_GET["n"])) $n = $_GET["n"]; else $n = 0;
   if (isset($_GET["d"])) $d = $_GET["d"]; else $d = 0;
	
   $_SESSION["user_name"] = $n;
   $_SESSION["user_date"] = $d;
	
   if (isset($_GET["o"])) $_SESSION["user_order"] = $_GET["o"];
	
   echo "SESSION HAS BEEN SET ON THE SERVER";
?>
Zusätzlich habe ich das selbe Script zur Kontrolle als Klickevent auf einen Button ohne weiter Funktion gesetzt. Wenn dieser Button gedrückt wird wird sofort "SESSION HAS BEEN..." angezeigt.

Wenn ich allerdings auf den Link klicke wird nur ein leeres Fenster angezeigt. Liegt das daran dass in der Zwischenzeit die gelinkte Seite angezeigt wird und es deshalb Komplikationen gibt? Die neuen Werte sind trotzdem gesetzt in Firefox, in Safari allerdings nicht. Hier wird noch nicht mal ein leeres Fenster angezeigt beim klicken auf den Link (beim Button klapps auch in Safari).

Danke für jede Hilfe!

Patrick
 
Wenn ich allerdings auf den Link klicke wird nur ein leeres Fenster angezeigt. Liegt das daran dass in der Zwischenzeit die gelinkte Seite angezeigt wird und es deshalb Komplikationen gibt?
Wenn du die Seite verläßt, sind die Javascriptobjekte nicht mehr verfügbar. Deshalb kann der Browser auch nichts mit der Antwort vom Server anfangen. Du müßtest dann eine Weiterleitung mit Javascript machen, die erst ausgeführt wird wenn Javascript die Antwort verarbeitet hat.

Denke allerdings dass diese Sessionupdate per Ajax unnötig ist. Die Session wird ja sowieso geupdatet (da der Client vom Server ne Seite anfordert). Den Code, der da noch ausgführt wird, kannst du ja einfach in die entsprechenden php-Seiten einbinden.
 
Zurück
Oben