function hent() { if (window.XMLHttpRequest) { // code for Mozilla, Safari, ** And Now IE 7 **, etc xmlhttp=new XMLHttpRequest(); } else if (window.ActiveXObject) { //IE xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); } if (typeof(xmlhttp)=='object') { xmlhttp.onreadystatechange=FileReady; xmlhttp.open('GET', 'hent.php', true); xmlhttp.send(null); } }
// function to handle asynchronous call function FileReady() { if (xmlhttp.readyState==4) { if (xmlhttp.status==200) { document.getElementById('tal').innerHTML=xmlhttp.responseText; setTimeout("hent()", 1000); } else { document.getElementById('tal').innerHTML=xmlhttp.statusText; } } }
Jeg glemte at forklare, at den sidste linie ikke er inden for <script> tag
Du skal udskifte dit <body> tag med den. Med mindre du allerede har noget onload defineret: Så skal du tilføje hent();
Ellers prøv at indsætte nogen alert("debug 01"); forskellige steder, med forskellige numre, for at se hvor langt scriptet kører, og hvor det går i stå.
Hmm det eneste jeg lige kunne få øje på var de // foran det timeout som var, men det hjalp ingen ting. Den opdatere kun den ene gang. Som sagt er jeg ikke en haj til javascript, så kunne være lækkert hvis du kunne hjælpe mig færdig :)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-type" content="text/html;charset=UTF-8"> <title></title>
function hent() { if (window.XMLHttpRequest) { // code for Mozilla, Safari, ** And Now IE 7 **, etc xmlhttp=new XMLHttpRequest(); } else if (window.ActiveXObject) { //IE xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); } if (typeof(xmlhttp)=='object') { xmlhttp.onreadystatechange=FileReady; xmlhttp.open('GET', 'hent.php', true); xmlhttp.send(null); } }
// function to handle asynchronous call function FileReady() { if (xmlhttp.readyState==4) { if (xmlhttp.status==200) { document.getElementById('tal').innerHTML=xmlhttp.responseText; setTimeout("hent()", 1000); } else { document.getElementById('tal').innerHTML=xmlhttp.statusText; } } }
Nu har jeg kopiret det du skrev, men opdatere stadig kun hvis jeg opretter en ny fane, ellers bliver den bare som den er. kan du evt smide et link til din? så kunne jeg se om det var mit domæne..
Dog har jeg lagt en begrænsning på 15 opdateringer ind, da jeg ikke bryder mig om evig opdatering hvert sekund i et glemt browservindue (For meget trafik på serveren).
Skal jeg have noget java eller et eller andet indstalleret?, som virker over browser? for på min anden pc virker det i FF, men ikke IE. Så ved ikke om jeg skal hente noget java som IE bruger, hvor FF bruger noget andet?
Nu har jeg skrevet http://tjens.dk/eksperten/888851/test.html lidt om, så den opdaterer skærmen via DOM i stedet for det QuickAndDirty innerHTML der var i første version.
Det er testet i MSIE8, FF, Chrome og Opera Kan det nu køre i din MSIE nu?
Det er en interessant log: Der bliver kaldt ud, og svaret tilbage, men svaret (responseText) er tallet 88 hver gang, hvor det skulle være forskelligt hver gang.
Det må betyde at din browser ikke kontakter hent.php, men genbruger et gammelt svar, for at spare nettraffik.
Det er ikke lige min stærke side, men kig på dine browserindstillinger, og check at du ikke kører via en proxy-server, samt kig på indstillinger vedr. temporary internet files. Eller har du mistanke om virus eller andet malware?
Ja, det er mærkeligt: Hvad er ellers forskellen på PCer hvor det virker og ikke virker? Jeg tænker på windowsversion og browser.
http://tjens.dk/eksperten/888851/test.html er ændret, så den ændrer url på hver get, så en proxy ikke skulle kunne genbruge svaret fra hent.php. Prøv lige at teste den.
Sådan! - Den virker hvertfald på min kode computer, hvilket den ikke har gjort før. Dette er testet i IE8 & FF. Så det er bare super.
Hvis du ligger et svar med koden indkluderet skal jeg give dig point for det her spørgsmål, også opretter jeg en tråd med ekstra 200, som 1000tak for hjælpen.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-type" content="text/html;charset=UTF-8"> <style type="text/css"> #tal { margin: 10px; padding: 10px; border: 1px solid blue; font-size: 200%; width: 40px;} </style>
<script type="text/javascript"> var xmlhttp; var count = 0; function hent() { if (window.XMLHttpRequest) { // code for Mozilla, Safari, ** And Now IE 7 **, etc xmlhttp=new XMLHttpRequest(); } else if (window.ActiveXObject) { //IE xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); } if (typeof(xmlhttp)=='object') { var oDate = new Date(); var url = "hent.php?d=" + oDate.getTime(); xmlhttp.onreadystatechange=FileReady; xmlhttp.open('GET', url, true); xmlhttp.send(null); } }
// function to handle asynchronous call function FileReady() { if (xmlhttp.readyState==4) { if (xmlhttp.status==200) { OpdaterTal(xmlhttp.responseText); count++; if (count < 15) setTimeout("hent()", 1000); } else { OpdaterTal(xmlhttp.statusText); } } }
function OpdaterTal(txt) { var elm = document.getElementById('tal'); while (elm.childNodes.length > 0) elm.removeChild(elm.firstChild); elm.appendChild(document.createTextNode(txt)); } </script>
Har fundet ud af det :) - Men der er et lille problem. Når jeg så får hent.php til at hente noget data, så kan jeg ikke bruge html tags så udskrives de også?. Hvordan dælen kan det være?
#30 d= er et dummy løbenummer, som tvinger browser og proxy-servere til at kalde hent.php på serveren igen, istedet for at genbruge et gammelt svar fra hent.php. Det burde ikke være nødvendigt, men det var det på nogen af dine PCer. hent.php selv behøver ikke bruge get-variabel d til noget.
#31: localhost skal også have en webserver installeret, så den kan svare på en http-request.
#32 Det kan blive ugyldigt i fremtiden at vise tags, som man modtager i tekstformat. Lær at bruge document.createElement("htmltag") og appendChild o.s.v. i stedet. Se f.eks. hvordan tallet udskiftes i siden i OpdaterTal() til sidst i #29
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.