zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden setInterval ausschalten!?

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 28.12.2015, 19:50
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 30.09.2015
Beiträge: 34
mitchm befindet sich auf einem aufstrebenden Ast
Standard setInterval ausschalten!?

Hallo

ich lass eine DIV mittels einer setInterval(500ms) immer wieder neu laden.
$('#main').load(document.URL + ' #reload');

dies ist nötig da aus einer Datenbank immer neue Werte geladen werden.

Dann habe ich einige Links auf dieser Seite die über GET dann paar daten weitergeben und wiederrum in die DB schreiben.

Diese Links lasse ich in einen iframe "unsichtbar"

Mein Problem jetzt.

ich kann die Links zwar klicken... aber wenn ich allerdings direkt bei denn 500ms klicke.. dann passiert da nichts.. muss dann schon ein 2tes oder sogar 3tes mal klicken bis da was passiert.

wie kann ich das am geschicktesten umgehen?
habe mir überlegt das ich beim :hover einen clearInterval(); mache, das Problem dabei wäre aber dass wenn ich mit der Maus auf dem link durch zufall stehen bleibe, die Seite nicht mehr nachlädt.
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 29.12.2015, 11:43
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von mitchm Beitrag anzeigen
ich lass eine DIV mittels einer setInterval(500ms) immer wieder neu laden.
$('#main').load(document.URL + ' #reload');

dies ist nötig da aus einer Datenbank immer neue Werte geladen werden.
Jede halbe Sekunde?

Das bedeutet für den Server eine grosse Last. Da du von einer Datenbank sprichst, sollte bei so einem Interval alles optimiert werden und u.U. mit Loadbalancer gegen zuviel Last geschützt sein.

Zitat:
Zitat von mitchm Beitrag anzeigen
Mein Problem jetzt.

ich kann die Links zwar klicken... aber wenn ich allerdings direkt bei denn 500ms klicke.. dann passiert da nichts.. muss dann schon ein 2tes oder sogar 3tes mal klicken bis da was passiert.

wie kann ich das am geschicktesten umgehen?
Ich verstehe nicht wo konkret das Problem ist.
So wie du es beschreibst kann es nicht sein. Es sei denn, du hast in deinem Skript die Nebenläufigkeit die bei asynchronen Prozssen auftritt nicht beachtet, aber das ist mit der einen Zeile die du uns zeigst nicht ersichtlich
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 29.12.2015, 16:01
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 30.09.2015
Beiträge: 34
mitchm befindet sich auf einem aufstrebenden Ast
Standard

Na mehr code ist da nicht....

es gibt nur die diese Funktion welche beim Start ausgeführt wird.
Code:
$('#main').load(document.URL + ' #reload');
so dann sowas in der art...
HTML-Code:
<div id="main">
<div id="reload">
<a href="irgendeinlink">KLICK</a>
</div>
</div>
der macht mir nun jede 500 ms einen reload.
manchmal schaffe ich es aber nciht meinen Link du drücken weil der den div dann schon neulädt. dh. ich muss dann nocheinmal klicken. Ich überschneide mich mit der zeit.
Stelle ich es auf 1sek. oder sogar 2sek. dann ist die change dass ich der Link ausgeführt wird größer.
Mit Zitat antworten
  #4 (permalink)  
Alt 29.12.2015, 16:46
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von mitchm Beitrag anzeigen
der macht mir nun jede 500 ms einen reload.
Nein, macht der Code nicht.

Nachtrag: Der Rest deiner Schilderung ist seltsam, warum klickst du auf eine Link der nach einer halbe Sekunde wieder ausgetauscht wird? Warum ist da überhaupt ein Link?
Mit Zitat antworten
  #5 (permalink)  
Alt 29.12.2015, 17:02
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 30.09.2015
Beiträge: 34
mitchm befindet sich auf einem aufstrebenden Ast
Standard

wie macht der nicht?

jaaa fehlt noch die
HTML-Code:
 var refreshIntervalId = setInterval(intervalFunction,500);
also... jede 500ms holt der sich aus der DB einen aktuellen Wert... 1/0
Es ist eine Lampe die je nachdem was in der DB steht an oder aus ist.

Wenn die nun An ist... kann ich mit dem Link diese wieder ausschalten... link.php?lampe=0

oder wenn die aus ist kann ich sie mit dem Link link.php?lampe=1 wieder einschalten....

ob der jetzt eine 1 oder 0 schicken muss das macht eine Funktion im JS... das ist kein Problem....

nach dem schalten wird innerhalb von 500ms die Lampe dann wieder AN/Aus geschaltet...

JA er muss es aus der DB holen... weil die lampe auch anderweitig geschaltet werden kann.

Mein Problem ist einfach nur der Link der wegen des Interval ab und zu nicht geklickt werden kann.
Mit Zitat antworten
  #6 (permalink)  
Alt 29.12.2015, 17:11
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von mitchm Beitrag anzeigen
wie macht der nicht?

jaaa fehlt noch die
HTML-Code:
 var refreshIntervalId = setInterval(intervalFunction,500);
also... jede 500ms holt der sich aus der DB einen aktuellen Wert... 1/0
Es ist eine Lampe die je nachdem was in der DB steht an oder aus ist.
Es wäre deutlich hilfreicher wenn du tatsächlichen Code, anstelle von Fantasiecode zeigen würdest.

Deine Schilderungen sind auch keine Antwort auf meine Frage, warum tauscht du den Link alle 500 Millisekunden aus?
Mit Zitat antworten
  #7 (permalink)  
Alt 29.12.2015, 17:16
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 30.09.2015
Beiträge: 34
mitchm befindet sich auf einem aufstrebenden Ast
Standard

ohman....
ICH TAUSCHE IHN NICHT..... ich übergebe nur einen anderen Wert.

Ich habe es oben erklärt.... aber hier nochmal..
ich schalte eine Lampe AN/AUS je nachdem wie der aktuelle Status ist....
und damit ich den aktuellen Status bekomme lese ich jede 500ms die DB aus.

der Link hat damit nichts zu tun.... er liegt einfach nur in der <div> die reloadet wird.
und durch den reload... kann ich den Link nicht immer betätigen......
Mit Zitat antworten
  #8 (permalink)  
Alt 29.12.2015, 17:45
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von mitchm Beitrag anzeigen
der Link hat damit nichts zu tun.... er liegt einfach nur in der <div> die reloadet wird.
und durch den reload... kann ich den Link nicht immer betätigen......
Genau, weil du ihn tauschst und ich verstehe nicht warum. Das was du erklärst würde ohne Probleme anders gehen, in dem du nur das tauschst was sich ändert.
Mit Zitat antworten
  #9 (permalink)  
Alt 29.12.2015, 18:57
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von mitchm Beitrag anzeigen
also... jede 500ms holt der sich aus der DB einen aktuellen Wert... 1/0
Es ist eine Lampe die je nachdem was in der DB steht an oder aus ist.

Wenn die nun An ist... kann ich mit dem Link diese wieder ausschalten... link.php?lampe=0

oder wenn die aus ist kann ich sie mit dem Link link.php?lampe=1 wieder einschalten....

ob der jetzt eine 1 oder 0 schicken muss das macht eine Funktion im JS... das ist kein Problem....
Das solltest du nicht so machen.

Das ganze Konzept ist sehr wackelig. Letztlich solltest du das Interval auf ein notwendiges Maß erhöhen und den Link nur als "switch" benutzen. Er ändert den Zustand auf dem Server und dort wird auch erst geschaut welchen Zustand die Lampe hat.

Oder du nutzt einfach zwei Schalter, einen für AN und einen für AUS, egal welcher Zustand gerade die Lampe hat.

Das Problem das du lösen musst ist ja, dass du hier eine abgekoppelte Veranwortung hast. Der Server weiß nicht welchen Zustand die Lampe hat, egal ob du 500ms oder 10ms Intervale zum Server schickst. Der HTTP Request - Response Zyklus dauert länger und währendessen kann der Zustand, soweit ich verstanden habe, geändert werden.

D.h. du musst die Verantwortung über den Zustand auf dem Client völlig abkoppeln. Damit kannst du etwas entspannter (für den Server) arbeiten.

Daneben ist vermutlich dein Code auch fehlerhaft, wenn du eine komplette HTML Seite in ein DIV lädst, dann ist das nicht gültig. Normalerweise macht ja bei sowas einen extra response für eine AJAX Anfrage. In deinem Fall reicht 0 oder 1 als Antwort (was auch den Server noch mal entlastet) und diese wertest du in einem AJAX request aus und stellst es auf der Seite dar.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
css ein- und ausschalten headgrowe Javascript & Ajax 3 04.09.2007 14:12
css ein- und ausschalten headgrowe CSS 0 29.08.2007 17:35
Alles Ausschalten! psycho_dmr Offtopic 2 01.02.2007 20:13
phpBB-Funktionen ausschalten ArchEnemy Offtopic 3 28.09.2006 19:28
srcollbars seite ausschalten Holger (HMR) CSS 6 08.12.2004 14:47


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:11 Uhr.