PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Javascript funktioniert nur mit Debugger Breakpoint in Funktionsaufruf



goeck
27-04-2011, 09:59
Hallo Leute,

ich habe ein komisches Verhalten bei meinem Javascript Schnipsel in der Ausgabe des aktuellen Projektes festgestellt. ich nutze die Flot Plot Engine und bekomme Daten von einem PHP Skript als JSON. Das Javascript übergibt diese dann an Flot zum Plotten, das funktioniert auch sehr gut. Will ich aber nun aus diesen einzelnen Funktionen die Rückgabe in globale Variablen schreiben, um sie dann nochmal alle zusammen in einem Graph zu plotten, werden die Daten nicht geplottet, nur das Grid und die Legende und die Axen des Graphen, nicht aber die Daten an sich. Setze ich in diese Funktion irgendwo einen Breakpoint mit Firebug, werden auch die Daten einwandfrei geplottet. Was mache ich falsch?
Ich habe euch mal den Code der HTML Datei (als txt) angehängt. Würde mich freuen, wenn mal jemand drüber schaut.

Viele Grüße
Göck

msi
27-04-2011, 22:25
Hallo Leute,

ich habe ein komisches Verhalten bei meinem Javascript Schnipsel in der Ausgabe des aktuellen Projektes festgestellt. ich nutze die Flot Plot Engine und bekomme Daten von einem PHP Skript als JSON. Das Javascript übergibt diese dann an Flot zum Plotten, das funktioniert auch sehr gut. Will ich aber nun aus diesen einzelnen Funktionen die Rückgabe in globale Variablen schreiben, um sie dann nochmal alle zusammen in einem Graph zu plotten, werden die Daten nicht geplottet, nur das Grid und die Legende und die Axen des Graphen, nicht aber die Daten an sich. Setze ich in diese Funktion irgendwo einen Breakpoint mit Firebug, werden auch die Daten einwandfrei geplottet. Was mache ich falsch?
Ich habe euch mal den Code der HTML Datei (als txt) angehängt. Würde mich freuen, wenn mal jemand drüber schaut.

Viele Grüße
Göck

das success callback des ajax aufrufs wird bei dir aufgerufen nachdem $.plot aufgerufen wird. zum zeitpunkt wo du $.plot aufrufst sind also noch keine daten vorhanden, die geplottet werden sollen.

goeck
28-04-2011, 12:14
das success callback des ajax aufrufs wird bei dir aufgerufen nachdem $.plot aufgerufen wird. zum zeitpunkt wo du $.plot aufrufst sind also noch keine daten vorhanden, die geplottet werden sollen.

Hallo,

das erklärt auch, warum ich den Bug durch einen Timeout beheben konnte, vorerst. Ich habe die $.plot Funktion mit einem setTimeout() von 50mSec versehen. Wie kann ich allerdings festlegen, dass die $.plot Funktion als letztes ausgeführt wird?

Viele Grüße und vielen Dank
Göck

msi
28-04-2011, 16:00
in jedem success callback eine funktion aufrufen. in dieser funktion schauen ob ein zähler bereits X (anzahl ajax requests) erreicht hat. wenn ja dann chart plotten ansonsten nur den zähler erhöhen.