Avatar billede storkie Nybegynder
31. januar 2008 - 16:44 Der er 2 kommentarer og
1 løsning

Tjekke anden side og opdater

Hej

Jeg vil gerne lave en side, som kun opdatere, hvis der er ændringer. Måden jeg havde forestillet mig var, at et javascript indlæser en anden side skjult, som så enten retunerer 0 eller 1. Alt efter hvad man får retur skal den så opdatere siden.

På den måde vil jeg kunne tvinge opdatering af siden.

Håber I kan hjælpe.
Avatar billede w13 Novice
31. januar 2008 - 18:51 #1
Den rigtigste metode ville være at bruge Ajax, men jeg er på arbejde nu og er ikke meget for at give min kode ud.

Jeg kan dog hjælpe med et "hidden iframe" i stedet, som også sagtens kan gøre tricket.
-----------------------------------------------------------
<html>
<head></head>
<body>

<iframe style="display:none" src="tjek.htm"></iframe>

</body>
</html>
-----------------------------------------------------------
tjek.htm kan du så kalde hvad du vil - muligvis skal det jo være en ASP- / PHP-side, hvis du henter noget fra en database eller lignende.

Og tjek.htm skal så være noget i stil med:
-----------------------------------------------------------
<html>
<head>

<meta http-equiv="refresh" content="7">

<script type="text/javascript" language="javascript">
//brug nedenstående linje, hvis hovedsiden skal opdateres
parent.window.location.reload(true)
</script>

</head>
<body>
</body>
</html>
-----------------------------------------------------------
Bemærk at jeg opdaterer siden hver 7. sekund. Det går nemlig ikke at opdatere konstant - browseren ville gå helt ned. Og nu flere brugere du har ad gangen, nu mere vil den gå ned, så hold det tal så højt som muligt, så der ikke genindlæses for ofte.
Avatar billede storkie Nybegynder
31. januar 2008 - 22:08 #2
Tak for hjælpen. Jeg fandt noget, som eftersigende skulle være AJAX. Smider lige koden her, så andre kan få gavn af det:

<html>
<head>
<title>messages</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}

var http = createRequestObject();

function sndReq() {
http.open('get', 'siden.htm');
http.onreadystatechange = handleResponse;
http.send(null);
setTimeout("sndReq()", 7000); // Recursive JavaScript function calls sndReq() every 2 seconds
}

function handleResponse() {
if(http.readyState == 4){
var response = http.responseText;
if (response != responseold || responsecheck != 1) {
var responsecheck = 1;
document.getElementById("messages").innerHTML = http.responseText;
var responseold = response;
}
}
}


</script>
</head>
<body onLoad="java script:sndReq();">
<div id="messages"></div>
</body>

</html>


Det virker perfekt til mit formål. Du får selvfølgelig point, for dit gode hint.
Avatar billede w13 Novice
31. januar 2008 - 22:12 #3
Jup det er Ajax. Når du har lært det lidt bedre at kende, bør du dog benytte "post" og ikke "get" (da dette er et større sikkerhedshul), XML eller JSON i stedet for et HTML-dokument (som du henter med Ajax) og DOM i stedet for innerHTML, der er ugyldig kode. =)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester