Permalänk
Medlem

AJAX körs bara en gång i IE

Hej!

Jag har sökt runt på detta och det är tydligen så att IE sparar urlen(cache) och bara ger tillbaka samma värde men ingen av de svar jag har hittat och försökt har fungerat.

Min kod:

<script type="text/javascript"> function showHint() { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","sida.php?q=<?php echo $variabel; ?>",true); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.send(); setTimeout("showHint()", 1000); } </script>

Det som många säger ska hjälpa är att man lägger till en variabel i urlen som ändras varje gång skriptet körs men jag har försökt utan framgång.
Finns det någon som vet yttligare sätt som man kan fixa detta på?

Tack på förhand!

Permalänk
Medlem

Om det är <?php echo $variabel; ?> du syftar på så körs den bara när sidan först laddas. Vill du skicka ett nytt 'q' vid varje klick får du använda javascript. new Date().getTime() ger dig ett nytt värde varje millisekund, vilket borde räcka gott.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Testpilot

Du kan lösa det utan att hålla på med fullösningar som att lägga till siffror i adressen. I filen som hämtas via AJAX kan du lägga till headers så den inte cachas. För PHP:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

Efter du lagt dit det måste du rensa IE:s cache en gång till eftersom den har kvar den gamla versionen utan rätt headers men efter det kommer inte IE cacha sidan längre.

Visa signatur

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 16GB][Asus GeForce RTX 2060 Super Dual Evo OC]

Permalänk
Medlem

Provade båda två enskilt och det funkade perfekt, tack för hjälpen båda två