06. april 2010 - 20:02Der er
16 kommentarer og 1 løsning
Ajax bliver ikke ved med at opdatere
Hejsa. Jeg er igang med en tagwall, som gerne skulle opdatere nye beskeder. Den skal tjekke om der er kommet nye beskeder hvert 10'ende sekund, og hvis der er det skal den opdatere tagwallen med dem. Og indtil videre er jeg kommet frem til denne kode:
var getid = getXmlHttpRequestObject(); var gettags = getXmlHttpRequestObject(); var id = ""; function getXmlHttpRequestObject() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if(window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); } } function update(){ getid.onreadystatechange=lastid; getid.open("GET","tagwalllastid.php",true); getid.send(null); setTimeout("update()", 10000); } function lastid(){ if (getid.readyState==4) { if(id!=getid.responseText){ gettags.onreadystatechange=tags; gettags.open("GET","tagwallServer.php",true); gettags.send(null); } id = getid.responseText; } } function tags(){ if (gettags.readyState==4){ document.getElementById("screen").innerHTML = gettags.responseText; } } update();
Og lige for at fortælle lidt om den, så inde på tagwalllastid.php, der er det eneste der står ID'et på den sidste tagwall-besked der er skrevet.
Og i tagwallServer.php er alt de tags jeg vil vise i tagwallen.
Lige pt opdaterer den ikke når der kommer nye beskeder.. Kan i se hvad der er galt?
Der bliver ikke opdateret.. Når jeg ved der er kommet nye beskeder dukker de i hvertfald ikke op på siden, så der må jo være fejl i koden. olebole, jeg har prøvet det du har sagt, men det virkede ikke. Måske kan det være noget med getid.responseText og gettags.responseText der ikke kan ændres? Eller måske noget med denne funktion:
function tags(){ if (gettags.readyState==4){ document.getElementById("screen").innerHTML = gettags.responseText; } }
Det kunne også være noget andet... Håber I vil hjælpe :)
Prøv at lægge et link til et live eksempel. Så vidt jeg kan se, er det ikke i koden, du viser her, du laver fejl - omend det er lidt bøvlet at se udfra din kodesovs (du børe lære at indrykke, mens du skriver din kode. Ellers lærer du aldrig at kode).
Fuck, hvor er jeg dog træt af Ekspertens elendige session-håndtering - eller hvad det nu er, der gør, at så mange klager over, at det ene efter det andet indlæg forsvinder, når der trykkes 'Opret' ...!!!
Anyway ... læg et link til et live eksempel. Det er øjensynligt ikke i koden, du viser her, du laver fejl
Olebole, du kunne da lige skrive at du ikke ved hvad fejlen er så, i stedet for slet ikke at svare? Jeg går og venter på svar, og kan jo ellers ikke vide om du ikke kigger på det mere.. Men jeg har set du har svaret mange andre i de sidste par dage så regner med du ikke kan finde løsningen...
Virker denne kode for dig i Internet Explorer da? og nej, men for at tjekke det kan du oprette en bruger på nsavisen.ooz.dk og så skrive i tagwallen. så skulle den gerne opdatere, men det gør den ikke i Internet Explorer.
Ok, du kunne jo bare have skrevet at problemet var i IE, så havde vi sparet lidt tid.
Anyways, tror ikke fejlen ligger i din ajax men på din new side 8)
Din side bliver cached af IE. Dette kan undgås ved at tilføje et par headers.
Prøv at starte din new.php med
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache");
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.