02. maj 2009 - 11:55Der er
5 kommentarer og 1 løsning
Hjælp med ajax programmering..
Hejsa. Jeg er total ny i js og ajax, kan do lidt js.
Nu mit problem. Jeg har en embettedwebserver, hvor i jeg kan uploade html filer. Det virker fint :-) Denne webserver har nogle tags, f.eks %F10 blive erstattet af teksten On eller Off an på tilstanden på en af dens port bits. Denne tekst bruger jeg til at hente et billede ind, og få det vist på en html side, dette virker også fint. Men Ja her kommer det, for at kunne overvåge tilstandet af denne port er jeg nødt til at reloade siden, (alså selv lade browserne reloade siden), dette kunne jeg godt tænke mig at kunne lave med Ajax i JS, så det kun er billedet der skifter. Og ikke helesiden der skiftes / blinker hvergang den genindlæses.
Det er vigtigt at løsningen fylder så lidt som mulig, da jeg kun har begrændste plads til html filerne i denne webserver.
Håber der er en / flere venlige sjæle der vil hjælpe mig med dette problem. MVH Allan
ok, dette kan gøres på flere måder og Jeg kender ikke din side struktur (er den bygger i tabeller, <DIV>'s ....) men her er et par punkter som du kan tænke over:
- hvert billede skal findes i et definerbart område på siden (f.eks. <div></div>) - området skal være unikt navngivet med et ID= - det fylder ikke meget at tilføje AJAX til en side, kan nemt gøres med 10 linier JS. Der kommer også noget extra JS på hvert af dine links (f.eks. onClick="return IndlaesBillede(123);")
Giv mig lidt mere information at tygge på, så kan Jwg forhåbentligt pege dig i den rette retning.
ok, så hvis Jeg forstår det korrekt er det kun et billede ad gangen der skal ændres (f.eks. door$f17.gif)?
Næste spørgsmål: hvordan bliver ændringen sat i gang? skal du trykke på et link eller har du en anden trigger?
Du kan jo bruge AJAX på flere måder - f.eks. som en del af brugerfladen afhængig af hvad brugeren gør .. eller hvor du konstant har en asynkron forbindelse til et andet script som løbende føder siden med informationer.
Nej jeg ved ikke hvilket et af billederne der er blevet ændret, Det kan være fra $f10 til $f17 Det er der ingen der ved, kommer jo helt an på hvilken dør der aktuelt er åben/lukket.
Som jeg skrev i det første indlæg, er det en refrash der gen indlæser siden. Så det vil i praktisk sige at man egentligt kan "misse" en dør åbning / lukning, hvis ham der åbnet døren er hurtig nok. Så derfor kører jeg med en refresh af siden på 2 sekunder.
Det er altså webserveren der erstatter $1x værdierne i HTML dokumentet.
For at kunne udnytte dette skal du lave en side som bare formaterer $ værdierne så kan du bruge ajax og js til at aflæse disse og agere derefter.
"status.html" kunne meget simpelt bare være: <html><body>|$10|$11|$12|$13|$14|$15|$16|$17|</body></html>
Uden at skrive hele din JS (med mindre du kan vente et par uger før jeg er hjemme igen) vil AJAX delen se ud nogenlunde som dette:
<script language="JavaScript" type="text/javascript"> <!-- // ----- opsaetning af ajax ---------------- var xmlhttp = false;
// Check om vi bruger IE. try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } // catch } // catch
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest(); } // if // ----- opsaetning af ajax ----------------
var Status = '';
// ----- selve ajax rutinen ---------------- function IndlaesStatus() {
// aabner forbindelsen til status siden xmlhttp.open("GET", 'status.html');
// dette er en callback rutine som venter paa status siden er klar xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { Status = xmlhttp.responseText; } // if } // function
ok, det er jo klar der mangler noget :) -- en js rutine til at klippe "Status" i stykker med split() og løbe gennem værdierne for at se hvad er ændret og så ændre billederne -- en timer rutine som starter hele processen hvert andet sekund
må jeg være nysgerrig og spørge hvad det er for en enhed du roder med?
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.