Hi Board,
ich komme nach langer Zeit mal nicht mehr alleine weiter.
Ich habe eine Applikation basierend auf Zend Framework (Zends MVC Application) gebastelt.
Ich habe eine Seite, die Diagramm darstellt. Das Diagramm wird dynamisch über php generiert.
Nun will ich die Daten des Diagramms klickbar machen, das funzt ja über den <area shape..."> zeug.
Erstmal mein Code:
In meinem View gebe ich das Diagramm folgendermaßen aus:
In der entsprechenden Action (myAction) erstelle ich das Bild und gebe es aus:
Nun will ich die Balken des Diagramms klickbar machen. Also habe ich meine chart klasse um die Methode getCoords() erweitert, die mir ein Array mit den entsprechenden Koordinaten zurückgibt.
Da diese Action aber über <img ...> aufgerufen wird, komme ich so nicht an die getCoords() ran.
Daher will ich die Koordinaten in der Session speichern und diese später (nachdem das Bild geladen wurde), abholen (Ajax).
Also habe ich die Action entsprechend erweitert um die Koords in der Session zu speichern und diese bei einem eingehenden XHR-Request auszugeben:
Alles anzeigen
Jetzt habe ich in meinem View ein bisschen JQuery, dass einen XHR-Request auf die o.g. Action absetzt um die Koordinaten als JSON zu erhalten.
Jetzt zum Problem:
Es werden mir nicht die richtigen Koordinaten zurückgegeben. Also manchmal die richtigen, passend zu meinem Diagramm, manchmal falsche - ein klick hinten dran. Als würde die Session-Variable nicht richtig gesetzt werden, wenn die Action über <img src=""> aufgerufen wird.
Habe ich irgendwie einen Denkfehler?! Ich dachtge schon die Zeit wäre das Problem: dass zum Zeitpunkt der Abfrage der Session-Variable über AJAX diese noch überhaupt nicht gesetzt wurde. Also habe ich ein bisschen analysiert und herausgefunden, dass der XHR-Request ein paar sekunden nach dem Laden des Bilds abgesetzt wird. Die Session Variable müsste da also schon gesetzt sein.
Warum bekomme ich da nur Murks? Doch irgend ein Denkfehler? Ich kann leider den ganzen Code nicht posten wegen Zend Framework (zu viele actions views zeilen usw);
ich komme nach langer Zeit mal nicht mehr alleine weiter.
Ich habe eine Applikation basierend auf Zend Framework (Zends MVC Application) gebastelt.
Ich habe eine Seite, die Diagramm darstellt. Das Diagramm wird dynamisch über php generiert.
Nun will ich die Daten des Diagramms klickbar machen, das funzt ja über den <area shape..."> zeug.
Erstmal mein Code:
In meinem View gebe ich das Diagramm folgendermaßen aus:
In der entsprechenden Action (myAction) erstelle ich das Bild und gebe es aus:
Nun will ich die Balken des Diagramms klickbar machen. Also habe ich meine chart klasse um die Methode getCoords() erweitert, die mir ein Array mit den entsprechenden Koordinaten zurückgibt.
Da diese Action aber über <img ...> aufgerufen wird, komme ich so nicht an die getCoords() ran.
Daher will ich die Koordinaten in der Session speichern und diese später (nachdem das Bild geladen wurde), abholen (Ajax).
Also habe ich die Action entsprechend erweitert um die Koords in der Session zu speichern und diese bei einem eingehenden XHR-Request auszugeben:
PHP-Quellcode
- <?php
- $session = Zend_Registry::get('session');
- if($this->getRequest()->isXmlHttpRequest()){
- //XHR REQUEST, KOORDINATEN ALS JSON SENDEN
- $coords = $session->coords;
- $this->gethelper('json')->sendJson($coords);
- } elseif($this->getRequest()->isGet()){
- //NORMALER GET REQUEST, DIAGRAMM ERSTELLEN AUSGEBEN UND KOORDINATEN IN SESSION
- $cF = new ChartFactory();
- $barchart = $cF->getChartObject('Barchart', $someBarData);
- $session->coords = $barchart->getCoords();
- $barchart->showChart();
- }
Jetzt habe ich in meinem View ein bisschen JQuery, dass einen XHR-Request auf die o.g. Action absetzt um die Koordinaten als JSON zu erhalten.
Jetzt zum Problem:
Es werden mir nicht die richtigen Koordinaten zurückgegeben. Also manchmal die richtigen, passend zu meinem Diagramm, manchmal falsche - ein klick hinten dran. Als würde die Session-Variable nicht richtig gesetzt werden, wenn die Action über <img src=""> aufgerufen wird.
Habe ich irgendwie einen Denkfehler?! Ich dachtge schon die Zeit wäre das Problem: dass zum Zeitpunkt der Abfrage der Session-Variable über AJAX diese noch überhaupt nicht gesetzt wurde. Also habe ich ein bisschen analysiert und herausgefunden, dass der XHR-Request ein paar sekunden nach dem Laden des Bilds abgesetzt wird. Die Session Variable müsste da also schon gesetzt sein.
Warum bekomme ich da nur Murks? Doch irgend ein Denkfehler? Ich kann leider den ganzen Code nicht posten wegen Zend Framework (zu viele actions views zeilen usw);
----[Blockierte Grafik: http://www.smilie-harvester.de/smilies/Alltag/putzen.gif] Nein ich bin nicht die Signatur, ich Putz hier nur ---
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von eseL ()