"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[JavaScript] JSON lesen

prayerslayer 04.06.2010 - 18:44 6095 46
Posts

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Doh! I c, damn. Stell mir das nicht so flüssig vor zu prototypen mit JSP wenn du einen JS Client Fehler suchst .. kannst nicht zum testen das ganze HTML File einfach wo statisch ablegen und rumschieben/testen der Elemente ohne JSP im Hintergrund, maximal noch die Ressourcen von Tomcat referenzieren?

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
Pfoah ich hasse JavaScript! Ein paar Mal hab ich jetzt Project gecleaned, WD des Tomcat gelöscht, ein bisschen die Skript-Tags herumgeschoben und auf einmal läufts wieder :bash:

Der alert() im document.ready ist nicht gekommen, weil eine fehlerhafte Abfrage dazwischen war.

Im Prinzip bin ich wieder glücklich, außer dass der NoGray Calendar nicht angezeigt wird, obwohl ich ihn 1:1 (nur mit anderem Namen) wie im Beispiel eingebunden hab :(
Bearbeitet von prayerslayer am 07.06.2010, 16:33

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Ich glaub den Link auf deinen Desktop willst nicht im Post haben.

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
Sorry, falschen Tab erwischt. Habs editiert.

//Ich seh schon, warum der Calendar nicht geht... Konstruktor wird fehlerhaft aufgerufen.
Bearbeitet von prayerslayer am 07.06.2010, 16:36

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
MooTools und jQuery sind kollidiert, deswegen kein Kalenderkonstruktor. :o

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Waaaaaaa, dreckszeug! Afaik kannst du jQuery so konfigurieren das es nicht kollidiert (also das es "$" nicht überschreibt); na, trotzdem ärgerlich.

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
Jo, das hat lustigerweise gleich funktioniert (im Gegensatz zu allem anderen :D).
Code:
var $j = jQuery.noConflict();
$j(document).ready(...)

Jetzt hab ich das Problem, dass ich das Format, in dem der friggin Kalender seine DatesOff haben will, nicht verstehe. Oder den Wald vor Bäumen nicht seh.

Läuft:
Code:
var us_holidays = [{date:1,
            month:0},
            {date:"3rd Monday",
            month:0},
            {date:"3rd Monday",
            month:1},
            {date:"last Monday",
            month:4},
            {date:4,
            month:6},
            {date:"1st Monday",
            month:8},
            {date:"2nd Monday",
            month:9},
            {date:11,
            month:10},
            {date:"4th Thursday",
            month:10},
            {date:25,
            month:11}];
Läuft nicht (auch ohne blanks):
Code:
var notSelectableDates = [{date:24, month:5},{date:25, month:5},{date:26, month:5}];
:confused:

Andererseits wars vorhin so, dass man im Kalender NICHTS außer Wochenenden selektieren konnte. Das hat sich auch plötzlich selbst behoben :o

//Wenn ich letzteres hardcode, gehts. Wenn ich denselben String mit $j("#jsonTF").html() geladen habe, gehts nicht.
///"Nicht gehen" heißt in meinem Fall, ich kann gar kein Datum auswählen.
Bearbeitet von prayerslayer am 07.06.2010, 18:43

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Ich versteh deine JSON-Selektoren ehrlich gesagt nicht... Ich nehm an du beskommst die Daten über eine AJA"X"-Abfrage. Injizierst du dann das JSON ins DOM und selektierst es nacher? Wenn ja, wieso? Du könntest es doch gleich weiterverarbeiten...

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
Die Daten kommen aus einem Servlet, eine andere Art des Datenaustauschs zwischen Java und JavaScript ohne Applet ist mir nicht eingefallen.

Also:
Java sammelt Daten, formatiert sie in JSON, schreibt sie ins DOM, JavaScript liest entsprechendes DOM-Objekt, wandelt JSON um und verwendet es.

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Ah ok. Ich weiß nicht ob es möglich ist mit der Architektur Daten roh (ohne jegliche Header und HTML) auszugeben. Wenn ja könntest du das ganze wie gesagt mit einem AJAX-Zugriff auf eine Seite, die nur deine JSON-Daten ausgibt lösen

http://api.jquery.com/jQuery.ajax/
http://api.jquery.com/jQuery.getJSON/

Du würdest die Daten dann auch als ordentliches JSON im Script haben. Andernfalls würde ich mal schauen, ob du wirklich valides JSON zurückbekommst - vielleicht gibts Probleme beim Encoding (könnte aber auch bei der anderen Lösung passieren), oder Zeilenumbrüche o.ä. passen nicht.

P.S.: AJAX macht natürlich nur Sinn, falls die Daten beim Seitenaufruf noch nicht zur Verfügung stehen. Wenn du aber schon weißt, was für Daten benötigt werden, dann würde ich den betreffenden Teil des Scripts dynamisch erstellen.

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
Ich finds ja auch nicht schön :D Allerdings wäre ich zufrieden, wenn ich die JSON Daten unsichtbar ins DOM bekäme, sodass sie keinen Impact aufs Layout haben. Ich hätte ja hidden Inputs genommen, aber da schlägt sich die value mit den double quotes.

Die Daten sind beim Seitenaufruf vorhanden, sie werden ja direkt in der HTML Seite an den Client geliefert. Leider weiß ich grad nicht, was du mit "den betreffenden Teil des Scripts dynamisch erstellen" meinst :/

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Wenn du die Daten schon zur Verfügung hast, dann kannst du ja JS genauso wie HTML serverseitig dynamisch erstellen lassen.

Eine einfache Möglichkeit ist, an der passenden Stelle im Header (dort, alle relevanten Dinge bereits initialisiert sind, aber noch vor dem Verarbeiten der Daten) einfach deine JS-Variablen in <script>-Tags zu packen und ihnen die benötigten JSON-Daten zuzuweisen.

Die Idee ist, dass JS-Daten im JS bleiben, das DOM (oder zumindest der body) unangetastet bleibt und du dich nicht mit Dingen wie Sonderzeichen herumärgern musst.

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Soweit ich verstanden habe macht er das eh genau so .. aber vielleicht falsch interpretiert. Bin ja schon gespannt was Sache ist :)

prayerslayer

Oar. Mh.
Avatar
Registered: Sep 2004
Location: vorm Sucher
Posts: 4073
Hm, das ist an sich eine gute Idee... Dass ich JS Code auch dynamisch erstellen kann ist mir nicht eingefallen :/

Ich müsste jetzt halt den ganzen Code aus den .js Dateien wieder zurück in <script> Tags in meinen Header transferieren, damit ich mit den Variablen auch arbeiten kann, oder?

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Nein, die verschiedenen JS-Scripten werden sowieso zusammengewürfelt (du musst ja z.B. jQuery auch nur einmal includen und kannst es dann überall verwenden). Es sollte reichen, wenn du wirklich nur die Variablen in die <script>-Tags packst (wie gesagt aufpassen, dass sie nachher nicht überschrieben oder vorher schon benötigt werden.)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz