Frage von perhp, 16

JavaScript - Cookie aus mehrfachen Objekt auslesen?

Hallo, ich habe folgendes Problem, wenn ich den Cookie auslese, bekomme ich das folgende Format zurück:

concert%5Bconcert%255Bconcert%25255Bid%25255D%255D%5D=55&concert%5Bconcert%255Bconcert%25255Bname%25255D%255D%5D=Gruppo%25252BBruno%25252Bmaderna%25252B-%25252BFabio%25252BNeri&concert%5Bconcert%255Bconcert%25255Blocation%25255D%255D%5D=Pavillon%25252Bdes%25252BFleurs%2525252FMeran&concert%5Bconcert%255Bconcert%25255BKatA%25255D%255D%5D=45.00%252525E2%25252582%252525AC&concert%5Bconcert%255Bconcert%25255BKatB%25255D%255D%5D=30.00%252525E2%25252582%252525AC&concert%5Bconcert%255Bconcert%25255BKatC%25255D%255D%5D=15.00%252525E2%25252582%252525AC&concert%5Bconcert%255Bconcert%25255BKatD%25255D%255D%5D=15.00%252525E2%25252582%252525AC&concert%5Bconcert%255Bconcert%25255BKatE%25255D%255D%5D=20.00%252525E2%25252582%252525AC&concert%5Bconcert%255Bconcert1%25255Bid%25255D%255D%5D=55&concert%5Bconcert%255Bconcert1%25255Bname%25255D%255D%5D=Gruppo%252BBruno%252Bmaderna%252B-%252BFabio%252BNeri&concert%5Bconcert%255Bconcert1%25255Blocation%25255D%255D%5D=Pavillon%252Bdes%252BFleurs%25252FMeran&concert%5Bconcert%255Bconcert1%25255BKatA%25255D%255D%5D=45.00%2525E2%252582%2525AC&concert%5Bconcert%255Bconcert1%25255BKatB%25255D%255D%5D=30.00%2525E2%252582%2525AC&concert%5Bconcert%255Bconcert1%25255BKatC%25255D%255D%5D=15.00%2525E2%252582%2525AC&concert%5Bconcert%255Bconcert1%25255BKatD%25255D%255D%5D=15.00%2525E2%252582%2525AC&concert%5Bconcert%255Bconcert1%25255BKatE%25255D%255D%5D=20.00%2525E2%252582%2525AC&concert%5Bconcert1%255Bid%255D%5D=55&concert%5Bconcert1%255Bname%255D%5D=Gruppo%2BBruno%2Bmaderna%2B-%2BFabio%2BNeri&concert%5Bconcert1%255Blocation%255D%5D=Pavillon%2Bdes%2BFleurs%252FMeran&concert%5Bconcert1%255BKatA%255D%5D=45.00%25E2%2582%25AC&concert%5Bconcert1%255BKatB%255D%5D=30.00%25E2%2582%25AC&concert%5Bconcert1%255BKatC%255D%5D=15.00%25E2%2582%25AC&concert%5Bconcert1%255BKatD%255D%5D=15.00%25E2%2582%25AC&concert%5Bconcert1%255BKatE%255D%5D=20.00%25E2%2582%25AC&concert1%5Bid%5D=55&concert1%5Bname%5D=Gruppo+Bruno+maderna+-+Fabio+Neri&concert1%5Blocation%5D=Pavillon+des+Fleurs%2FMeran&concert1%5BKatA%5D=45.00%E2%82%AC&concert1%5BKatB%5D=30.00%E2%82%AC&concert1%5BKatC%5D=15.00%E2%82%AC&concert1%5BKatD%5D=15.00%E2%82%AC&concert1%5BKatE%5D=20.00%E2%82%AC

und ich versuche dann das Objekt (das im Cookie gespeichert ist, wie folgt auszulesen:

<a href="http://codepen.io/anon/pen/dMedWV">http://codepen.io/anon/pen/dMedWV</a>

Wenn ich nur ein Objekt hätte, dann würd es problemlos funktionieren, aber bei mir kann das Objekt auch sehr viele Objekte enthalten. Zum Verstädnis noch, concert und concert1 sind bei mir die äußeren Objekte und innerhalb befinden sich die Properties. Wie kann ich jetzt also das Cookie auslesen, damit ich ein sauberes Objekt zurückbekomme?

Antwort
von Sarkophator, 8

Eigentlich ist es seltsam, dass dir $.cookie die Ausgabe nicht bereits schon selbst entschlüsselt, wenn ich das richtig verstehe? Normalerweise solltest du da zumindest eine brauchbare Ausgabe erhalten.

Mal abgesehen davon, ich kann jetzt zwar nicht genau sagen wie genau du das speicherst eben weil die Ausgabe (scheinbar sogar mehrfach) verschlüsselt worden ist, daher würde ich fragen: Speicherst du deine Objekte als JSON Objekte über JSON.stringify? Bzw. über $cookie.json = true, das übernimmt JSON.stringify und JSON.parse schon selbst.

Würde darüber wahrscheinlich deutlich einfacher gehen, außer es gibt einen speziellen Grund dafür die nicht zu verwenden?

Kommentar von perhp ,

Hallo, danke für die Antwort. Bin jetzt schon selbst auf die Lösung gekommen. Ich habe das Objekt mit $.param ins Cookie reingeschrieben und musste das Ganze dann anschließend mit einer Schleife wieder herausholen, da es ziemlich verschachtelt war. Am Ende ist der Code ziemlich komplex geworden, aber er funktioniert ohne Probleme :)

Antwort
von perhp, 12

Den Codepen Link hat es falsch eingefügt, einfach das href rauskopieren,um das JS zu sehen. Danke

Keine passende Antwort gefunden?

Fragen Sie die Community