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

IE führt HTTP-Request nur ein mal aus

RoFra

New member
Mahlzeit,

ich habe ein kleines Problemchen bezüglich JavaScript, bei dem mir Google und Co. leider nicht weiterhelfen konnten. Aber vielleicht könnt ihr das ja.. :)

Was ich möchte:
Ich habe ein DIV und einen Link. Wenn ich auf den Link klicke, soll im DIV eine Zufallszahl auftauchen. Bei jedem Klick eine neue Zahl. Das ganze soll über HTTP-Request laufen, da ich später noch mehr PHP-Gedöns mit $_GET und so einbauen werde.

Was ich habe:
Ein DIV mit der ID "rand" und einen Link, welches ein OnClick-Event auslöst. Außerdem gibt es die Datei random.php, welche letztendlich nur eine Zufallszahl via echo ausgibt. Die OnClick-Geschichte ist nur minimal verändert von einer anderen Seite übernommen und sieht folgendermaßen aus:
Code:
function getHttpRequest()
  {
  var xmlhttp = null;
  // Mozilla
  if (window.XMLHttpRequest)
    {
    xmlhttp = new XMLHttpRequest();
    }
  // IE
  else if (window.ActiveXObject)
    {
    xmlhttp = new ActiveXObject("Microsoft.xmlhttp");
    }	
	
  xmlhttp.open("GET", 'random.php', true);
  xmlhttp.onreadystatechange = function()
    {
    if (xmlhttp.readyState != 4)
	  {
      document.getElementById('rand').innerHTML = 'Laden';
      }
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
	  {
      document.getElementById('rand').innerHTML = xmlhttp.responseText;
      }
    }
  xmlhttp.send(null);
  }

Das Problem:
Der Internet Explorer macht noch nicht exakt das, was er soll. Man kann leider nur beim allerersten Klick eine neue Zufallszahl anzeigen lassen. Auf weitere Klicks reagiert er nicht mehr. In jedem anderen Browser kann man 100 mal klicken und es erscheint eine neue Zahl, nur im IE klappt es nur beim allerersten mal. Wisst ihr warum, beziehungsweise, was ich tun kann? :)

Vielen Dank! :)

EDIT: Ich habe gerade eine Möglichkeit gefunden, mit der es funktioniert. Dafür muss ich die Zeile
Code:
xmlhttp.open("GET", 'random.php', true);
ändern in
Code:
xmlhttp.open("GET", 'random.php?hash=' + Math.random(), true);
Offenbar setzt der IE also nicht jedes mal einen neuen Request ab. Wenn ich den Request allerdings mithilfe von math.random leicht abändere, dann kommt tatsächlich ein neuer Request. Das kann doch nicht normal sein, oder?
 
Zuletzt bearbeitet:
Doch, das ist ganz normal. Daher sollte man ja auch POST Requests machen oder - wie du - eine Zufallszahl anhängen. jQuery hat dafür extra den Parameter cache: false,
 
Ah okay. Na gut, wenn das normal ist und die Zufallszahl ein gängiges Mittel zur Umgehung ist, dann bin ich ja beruhigt. Danke. :)
 
Zurück
Oben