Verschachteltes JSON von JQuery an Django

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Hallo Forum,

ich bin gerade leicht verwirrt. Ich habe ein JSON-Objekt, das beim Verschicken so aussieht:

Code: Alles auswählen

{'receiveid': '185', 'moment': '9', 'positions': [{'articleid': '1743', 'chargeid': '170213-1743-72001'}]
Das geht per JQuery POST-Request an einen Django-View, aber da kommt folgendes an:

Code: Alles auswählen

<QueryDict: {u'receiveid': [u'185'], u'moment': [u'9'], u'positions[0][articleid]': [u'1743'], u'positions[0][chargeid]': [u'170213-1743-72001']}>
Mein View sieht im Moment so aus:

Code: Alles auswählen

def test(request):
    if request.POST and request.is_ajax:
        print request.POST
Bisher habe ich das nur mit einem dictionary gemacht, das hat immer wunderbar funktioniert. Aber mit der Verschachtelung scheint es Probleme zu geben.
Gibt es eine einfache Möglichkeit das MultiValueDict so zu konvertieren, dass da wieder die ursprüngliche Datenstruktur draus entsteht?

Danke!

Gruß
Sparrow
BlackJack

@sparrow: JSON und POST-Daten sind ja auch verschiedene Dinge. Du müsstest das JSON als *Daten* an den Server schicken und nicht aus einem JavaScript-Objekt eine POST-Anfrage machen lassen wo jQuery dann offensichtlich versucht das in eine flache Schlüssel/Wert-Struktur zu klopfen.

Du musst das JavaScript-Objekt in eine Zeichenkette umwandeln die JSON enthält und dann ein Schlüssel/Wert-Paar per POST senden mit einem beliebigen Schlüssel, beispielsweise 'data', und dem JSON als Wert. Und das JSON dann auf der Empfängerseite dekodieren. Beim Sender ist `JSON.stringify()` die passende Funktion.
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Ok, habe ich verstanden.
Aber eigentlich habe ich gedacht, dass man mit JSON über jQuery direkt die Arrays senden kann. Die Beispiele sehen nämlich für ein Array zum Beispiel so aus:

Code: Alles auswählen

$.post('/url/to/page', {'someKeyName': ['value','value']});
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Natürlich kann man dass, nichts in der von dir gezeigten Zeile Code hat allerdings irgendwas mit JSON zu tun.
Antworten