Daten Array mit Selectbox auswählen und an jquery/Ajax übergeben
Zazie
- javascript
0 Cheatah
Hallo,
als Neuling habe ich mich mit meinem Vorhaben eines "Dashboards" wohl etwas verhoben. Der Sinn meines Dashboards ist es, eine dynamische thematische Karte (Choropleth map) darzustellen nebst einigen Diagrammen, einer Tabelle und ein paar Zusatz-Infos.
Ich habe dazu aus freien Code-Snippets, eigenem Hirnschmalz und einer gekauften Lizenz (rGraph) die einzelnen Elemente funktionsfähig hinbekommen, d.h. die SVG-Karte, die Diagramme und die Tabelle funktionieren für sich genommen durchaus. Über php-Scripte wird jeweils ein Datenbankabruf generiert, der aber noch "statisch" ist, d.h. die Angaben für die abzurufenden rows in MySQL sind noch fest eingegeben.
Auch der Abruf einer XML für den Ajax Request kriege ich mit einer php-Datei, die Daten (noch statisch) abruft und per echo in ein xml-Format bringt (kein normales, sondern eins mit Multivalues, daher benutze ich keine PHP-XML Funktion).
Die zentrale Schaltstelle der Seite ist aber eine Multi-Selectbox, die über 5 Ebenen eine Auswahl ermöglicht. Nun benötige ich zur Auswahl der eigentlichen Daten aus MySQL zwei Ergebnisse aus der Selectliste: die erste Auswahl der "list1" mit einer Jahreszahl und die letzte Auswahl "list5" mit dem Item.
Über php und $POST kriege ich per Submit durchaus einen "richtigen" Datenbankabruf hin. D.h. eine nach Durchlaufen von Select per "Submit" aktivierte php generiert mir mit den Stellvertretervariablen $jahr und $auswahl die jeweiligen Daten im xml Format.
Was ich aber nicht hinkriege, ist, das Ergebnis der Auswahl (quasi eine xml.php Datei) mit dem jquery/ajax-request in Verbindung zu bringen.
Alle Versuche, dies mit $("list5").change(function(event) hinzubekommen, haben nicht gefruchtet.
Anscheinend mache ich grundsätzlch etwas verkehrt.
Wer kann mir helfen?
Hier die unfertige Seite:
http://www.johann-gerdes.de/karten1/htmlKarte1/karte_wb_0_8.php
Hi,
Was ich aber nicht hinkriege, ist, das Ergebnis der Auswahl (quasi eine xml.php Datei) mit dem jquery/ajax-request in Verbindung zu bringen.
Alle Versuche, dies mit $("list5").change(function(event) hinzubekommen, haben nicht gefruchtet.
Anscheinend mache ich grundsätzlch etwas verkehrt.
falls Du das $("#classList").change() in Deinem Code meinst: Die ID 'classList' gehört zu einem Formular. Hast Du überprüft, ob jQuery bei diesen ein onchange-Ereignis erzeugt?
Cheatah
falls Du das $("#classList").change() in Deinem Code meinst: Die ID 'classList' gehört zu einem Formular. Hast Du überprüft, ob jQuery bei diesen ein onchange-Ereignis erzeugt?
Cheatah
Hallo Cheatah,
'classList' ist in Ordnung und hat eine andere, spätere Funktion die momentan in der 0.8. Version durchaus funktioniert. Es handelt sich um das untere Select mit den Klassen. Um diese Form geht es also nicht, weil hier direkt die Value abgefragt und weitergegeben wird.
Das mit der direkten Value-Weitergabe würde auch in der Hauptseite funktionieren und zwar dann, wenn ich eine feste xml-Datei mit allen Daten installiere. Über das große Select können dann tatsächlich mit $("list5").change... NACH dem statischen ajax xml request die Daten mit if abgefragt und entsprechend geparsed werden (es funktioniert, habe ich probiert). Das wäre aber nur eine Notlösung, denn die xml würde dann sehr sehr groß werden müssen.
Daher brauche ich eine Datenbanklösung und das geht meines Wissens nur über 'Select' - 'php POST' - 'mySQL query + result' - 'xml(oder ggf json)' - 'zurück nach Javascript'. Während ich die ersten drei Stationen hinkriege, komme ich mit letzterem nicht klar. (Im Falle der Diagramme müsste das Ergebnis des 'Select' an eine komplexe php/mySQL-Abfrage mit json-String-Output übergeben werden - klappt auch nicht.
Ich habe deshalb alle (inzwischen chaotischen) Versuche mit .change aus der Version 0.8. entfernt, um das Ganze nicht noch verwirrender zu machen.
Die 0.8. demonstriert nur, dass die Teile jeweils einzeln funktionieren.
Ich hatte versucht z.B. über eine $("list5").change usw. vor dem ajax req einen Handler zu setzen, aber die html/php-Seite läuft beim Laden inkl. JS trotzdem ungebremst ab und meckert nur, dass der xml-req leer ist.
Die letzte Variante war, aus dem Select nur einen php-Dateinamen zu generieren und den an ajax zu übergeben. Hat aber auch nicht gefruchtet.
Und nun bin ich ratlos und finde auch nichts Passendes im web (weil ich vielleicht die falschen Fragen stelle?).
Danke für die Geduld
Zaziemetro