Det går inte eftersom det inte är ett client/server-system du arbetar med.
Webservern skickar bara data om klienten frågar efter det. Envägskommunikation.
16 svar · 691 visningar · startad av Meng
Skulle man inte kunna göra så här istället för att ha en meta tag som står och refreshar en sida:
När någon ändrar något i gäster eller lägger in något nytt så skrivs det update = "true" någonstans i databasen.
och på monitor sidan som visar gästerna har man en If-sats som säger:
If update = "false" then
Kolla igen om den är false alltså en loop
ElseIf update = "true"
Uppdatera sidan och
skrive update = "false"
End If
Om detta går hur ska det då se ut? och var ska jag lägga update= "true" när folk sparar en gäst?
Edit: ( Detta är till för ett gäst system där vi har en skärm i receptionen som visar dagens gäster )
Det går inte eftersom det inte är ett client/server-system du arbetar med.
Webservern skickar bara data om klienten frågar efter det. Envägskommunikation.
Jo det måste det göra, tror inte du förstår hur jag menar.
Om man ändrar något eller sparar en ny post i databasen så sparas också en post som säger true
en client sitter och kollar hela tiden om det står true annars kollar den en gång till osv.. tills det står true då gör den något och skriver sedan flase över true och fortsätter kolla om det står true i fältet. detta har inget med att skicka data från servern att göra ju?
Då måste du ha en fil som står och uppdaterar sig själv hela tiden..
Meng skrev:
Jo det måste det göra, tror inte du förstår hur jag menar.
Om man ändrar något eller sparar en ny post i databasen så sparas också en post som säger true
en client sitter och kollar hela tiden om det står true annars kollar den en gång till osv.. tills det står true då gör den något och skriver sedan flase över true och fortsätter kolla om det står true i fältet. detta har inget med att skicka data från servern att göra ju?
Och vart ska klienten kolla? Knappast mot sidan som laddats ner, eftersom den är en statisk produkt från webbservern.
Det enklaste klienten kan göra i detta fall är att a) trycka på F5 eller b) få en meta-refresh från servern, som du hade redan.
Jo men det jag vill uppnå är att jag uppdaterar monitorn när saker o ting sparas i databasen, går det bara att göra genom att stå och refresha, finns det inget dynamiskt sätt?
Databasen måste då skicka en signal till monitorn som säger att nu har jag blivit uppdaterad och då hämtar monitorn ny information från databasen.
Det går inte att göra med vanlig ASP. Du behöver en komponent som pollar databasen då och då och kontrollerar om någon ny data finns. Finns det ny data hämtar komponenten informationen och uppdaterar monitorn.
Engine^ skrev:
Det går inte att göra med vanlig ASP. Du behöver en komponent som pollar databasen då och då och kontrollerar om någon ny data finns. Finns det ny data hämtar komponenten informationen och uppdaterar monitorn.
Javisst! Hur gör man detta?! jag måste nämligen få det att funka eftersom vi har beställt en plastma skärm redan och får den nog i slutet av veckan eller nästa vecka ;)
Du tar och lär dig exempelvis Visual Basic lite fort och knåpar ihop en ActiveX-komponent där eller något liknande.
Jag skulle gissa på att med den tidsram du har så är det hetaste tipset att du använder dig av meta-refresh tillsvidare.
Finns kanske ett sätt men det är igenligen dålig programmering och "äcklig". Skapa en frame och där har du en sida som refreasar, där den märker att sidan är ändrad uppdaterar den din lista med javascript. teoretiskt borde det fungera.
Tja... det kanske inte är så dum nödlösning. Gör man en väldigt liten <iframe> så lär en förbipasserande inte märka den refreshen.
Det kvittar ifall kunderna eller någon annan kan se att denn updateras, alltså blir vit i någon sekund och sedan visar sidan igen. Just nu kör jag med ett vbs script som niko gjort som uppdaterar en gång i halvtimmen. Men jag vill ju gärna komma ifrån detta med update tider. Sen vill jag gärna kunna dela sidan i tre delar som uppdateras separat, en top utan refresh, en gäst sida med datum osv. och en list i botten med viktiga meddelanden. Allt detta ska visas på en 32 eller 42 tums plasma som skall hänga i ingången. Så jag kommer inte riktigt kunna övervaka om den går i fel förutom när jag går ut o tar en cigg eller ska hem, eller liknande.
Hur kan jag göra så den bara uppdaterar när det ändras nu då? Jag behöver script =) gärna vbs det funkar väldigt bra nu iaf.
nikos vbs script:
function EttLangtOchMeningslostSlumpTal()
randomize
for i =1 to 20
s = s & Int(rnd*10)
next
EttLangtOchMeningslostSlumpTal = s
End Function
antalsekunder = 1800
set ie = CreateObject("InternetExplorer.Application")
ie.visible = true
ie.fullscreen = true
do while true
ie.navigate2 "http://intranet/guest/guestshow/index.html?dummy=" & EttLangtOchMeningslostSlumpTal()
for i = 1 to antalsekunder
WScript.Sleep 1000
next
loop
Men jag vill ju gärna komma ifrån detta med update tider.
Men varför? Om jag inte missuppfattat så har du exakt EN klient och data ändras relativt sällan? Vad är det då för problem med att polla, tom med ganska låga intervall?
Om det är det rent visuella flimrandet av refreshen som stör dig så kan du ju låta en "osynlig" ram hämta datat (med korta intervall) och sen låta den "skriva in i" de övriga ramarna bara precis när nåt intressant hänt?
Jepp niko en klient men låt oss säga att det kommer ett gäng gäster kl 9:00 och personen ifråga kommer på detta och inte hinner skriva i det förren 8:40 då hinner skärmen (kanske) inte uppdatera, därför vill jag komma ifrån det att den uppdateras period vis och istället uppdateras så fort det finns ny data eller ändringar. Detta kommer inte användas sällan utan fler gånger om dagen...
Det största aspekten i detta är att det är crash säkert, det visuella får komma till sisst. den sista koden du gav mig med EttLangtOchMeningslostSlumpTal() funkade inte så bra så jag använder den gamla igen..
Om det är det rent visuella flimrandet av refreshen som stör dig så kan du ju låta en "osynlig" ram hämta datat (med korta intervall) och sen låta den "skriva in i" de övriga ramarna bara precis när nåt intressant hänt?
Låter fine, hur kan man göra detta?
och inte hinner skriva i det förren 8:40 då hinner skärmen (kanske) inte uppdatera,
Ja, men återigen: Du har EN klient. Vad är problemet med att polla i tex 10-sekundersintervall (förutom det rent visuella)?
EttLangtOchMeningslostSlumpTal() funkade inte så bra
Varför skulle den inte "funka"? Det är ju bara en sträng. Isåf har du klippt på den felaktigt på nåt sätt.
Låter fine, hur kan man göra detta?
Jag är inte så bra på javascript, men nåt sånt här kanske (i princip):
' En_osynlig_ram.asp
<html><head>
<script>
function kollaefternydata()
{
if(document.getelementById('nydata').innerText == 'true')
parent.densynligaramen.document.getelementById('presentationsruta').innerHTML =
document.getelementById('dennyadatan').innerHTML;
}
</script></head>
<body onload="kollaefternydata();">
<% if DetÄrFlaggatFörNyData() then%>
<span id="nydata">true</span>
<span id="dennyadatan"><%=DenNyaDatan%></span>
<%else%>
<span id="nydata">false</span>
<%end if%>
</body></htm>
Andra möjligheter är såklart en applet eller Flash om det nu är den rent visuella refreshen som stör dig.
Varför skulle den inte "funka"? Det är ju bara en sträng. Isåf har du klippt på den felaktigt på nåt sätt.
Datorn kom med en popup efter drygt 2 timmar och som det stog i att det blivit ett script fel.
Helt klart skulle det vara superbt med en refresh i 10 sek intervall om det var stabilt och inte stog o flimrade, i flash hade det varit vackert men jag vet bara inte hur man får asp och flash att sammarbeta. En applet hade också funkat men det vet jag inte hur man skapar..
bra idée med scriptet men hur man det att fungera, 'hur flaggar man ut att det finns ny data
På jobbet har vi ett liknande system.
Där löste vi detta genom att ha ett frameset där du gör en frame 0 pixlar hög eller bred, beroende på om du kör rows eller cols.
I framen som är 0px har vi en sida med en metarefresh på typ en minut. Den kollar om ett värde i databasen är true. Om det är så, sätt värdet till false och skriv ut ett javascript som refreshar den andra framen (den med innehållet).
Samtidigt måste du ha en refresh på "huvudframen" eftersom den måste uppdateras när det blir ny dag etc... Där kör vi att den uppdateras en gång i halvtimmen. Funkar klockrent.